x86 - количество регистров против количества зарезервированных бит
Я новичок в сборке, и мой вопрос:
Если машина имеет, например, n регистров. Сколько бит нужно зарезервировать в инструкции по сборке для адресации каждого из n регистров?
И насколько функциональное разделение может уменьшить необходимые биты?
1 ответ
На это нет универсального ответа. Очевидно, вам понадобится не более, чем достаточно бит для хранения количества регистров. Поэтому, если у вас 12 регистров, вам понадобится 4 бита (2^4 == 16).
Но набор команд может обрабатывать некоторые регистры по-разному (например, иметь инструкции, которые неявно адресованы только конкретному регистру; см. LOOP
для х86). Таким образом, ЦП может иметь 9 регистров, но поскольку доступ к одному из них возможен только с помощью специальной инструкции, вам потребуется только 3 бита для адресации оставшихся 8. Кроме того, некоторые инструкции могут разрешать только определенное подмножество регистров, что также уменьшает количество биты, необходимые для их адресации (скажем, инструкция позволяет работать только с регистрами 0–3).
И чтобы сделать его еще более сложным, существуют окна регистров, которые делают только поднабор физических регистров доступным для набора команд.