Я пытаюсь узнать, как вручную преобразовать одну инструкцию по сборке в код OP.В качестве примера я смотрю на набор команд PowerPC, который имеет фиксированную длину инструкции 4 байта.Следующий пример написан в моей справке:
One effect of fixed-size instructions is you can't load a 32-bit constant in a single instruction:
li r3, 0xabcdef ; ERROR! out of range!
Вот мои вопросы:
1- Как вы рассчитываете длину инструкции?Я предполагаю, что вы сначала нашли код OP li
бит в руководстве по PPC?как насчет остальных, r3, 0xabcdef
, как вы переводите их в двоичный файл?Как я могу сказать, что длина этого взаимодействия превышает 32 бита?
2 - Предполагая, что 0xabcdef
является адресом памяти для int, когда эта инструкция кодируется, ассемблер превращает 0xabcdef
в ее фактическуюint
значение или кодирует сам адрес памяти?
3- Загружена ли вся эта инструкция в один регистр в CPU перед выполнением?Если да, то почему это может быть проблемой на 64-битной машине?у них нет 64-битных регистров?