Почему у 8051 нет R0 до R32

В банке памяти 8051 (от 00h до 1Fh) 8051 предоставляет 32 регистра в виде 8 регистров (R0 t0 R7) для каждого из 4 банков. Почему эти регистры не указаны как от R0 до R31?

Заранее спасибо..


person vaibhav dhingani    schedule 27.09.2013    source источник
comment
потому что они в банках (сначала нужно переключиться на банк)   -  person Rob    schedule 27.09.2013


Ответы (2)


Коды операций многих инструкций имеют длину всего 8 бит; если бы все 32 регистра были доступны в одной из этих инструкций, то осталось бы только 3 бита для кодирования длины инструкции и операции. Точно так же двухбайтовые инструкции часто используют второй байт для кодирования полного 8-битного операнда (например, адреса) и фактически имеют такое же ограничение.

Во многих случаях можно обратиться к нужному вам регистру по его абсолютному адресу, используя более длинную инструкцию, но если вы будете часто обращаться к нему, возможно, будет лучше изменить активный банк, чтобы вы могли использовать более короткие коды операций.

person sh1    schedule 28.09.2013
comment
это похоже на x86 в первые дни, потому что некоторые инструкции кодируются только 1 или 2 байтами. Использование большего регистрового пространства часто требует более длинного кодирования для инструкций, поскольку 3 или 4 бита будет недостаточно для базового набора инструкций. - person phuclv; 16.10.2013

Насколько я помню, вы можете получить доступ только к 8 из этих регистров одновременно. Чтобы получить доступ к одной из других групп, вам нужно переключить банк. Я предполагаю, что это как-то связано с тем, что операнд инструкции имеет длину всего 3 бита (а не 5 бит).

person Caladan    schedule 27.09.2013