Есть ли неиспользуемые биты в кодировке инструкций aarch64?

Согласно этой ссылке о кодировке команд aarch64, в некоторых инструкциях есть неиспользуемые биты, например x в списке ниже для LDR instruciton. Но я имею любую документацию о неиспользованных битах в руководстве armv8. Являются ли эти неиспользованные биты действительными в соответствии с руководством armv8?

xxx1 1101 x1ii iiii iiii iinn nnnt tttt - ldr Ft ADDR_UIMM12

1 ответ

Решение

Эта ссылка с 2012 года, то есть когда была выпущена архитектура ARMv8, поэтому информации о ней было немного. Символ "х" в этом случае связан с расшифровкой инструкции, не уверен, как они это делают, для меня это выглядит неправильно. Вы можете найти все значения для кодирования в Справочном руководстве по архитектуре ARM, посмотрите, что в инструкциях LDR используются немедленные значения (например, LDR (немедленная) страница 693, в частности, смещение без знака на следующей странице). Там вы увидите, что два старших разряда используются для размера регистра (размер == 10 для регистров W (32 бита) и размер == 11 для регистров X (64 бита)).

В Справочном руководстве по архитектуре ARM обычно, когда есть неиспользуемые кодировки, говорится "Нераспределенное кодирование" или "Резервное кодирование" или что-то подобное.

Кодирование для LDR (немедленное) Беззнаковое смещение

Кроме того, существует множество бесплатных кодировок, которые можно использовать, вероятно, для будущего использования или, например, для модуля Scalable Vector Extensions. Вы можете увидеть все используемые и свободные кодировки в следующих слайдах Найджела Стивенса на конференции Hot Chips 28 22 августа 2016 года, посмотрите на фрагмент 8, серые квадраты - это свободные неиспользуемые кодировки.

Другие вопросы по тегам