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