Lab 2: Базовые команды и кодирование для процессора #2
@ -53,6 +53,13 @@
|
||||
6. После SIB идет displacement байты (1 или 4 в зависимости от поля mod в ModR/M). Заполняем их согласно выделенному количеству
|
||||
7. После dispacement идет immediate байты - они могут встретиться если в табличке в колонке opcode на этой строке есть что-то похожее на `ib` или другие, которые мы упоминали. заполняем сколько надо
|
||||
|
||||
NOTE: По какой-то причине это не указано в руководстве Intel, но по крайней мере если верить сайту, который я использовал для ассемблирования инструкций, то нужно обязательно учитыать префиксы к опкоду прежде чем начинать кодировать (опять же все по опыту):
|
||||
|
||||
1. `0x67` - ставится если команда **адресуется** при помощи 32-битных регистров
|
||||
2. `0x66` - ставится, если программа иссользует хотя бы 1 16-битный регистр
|
||||
|
||||
Благо для 8-битных операций другие опкоды и хотя бы на них не надо префиксы запоминать)
|
||||
|
||||
<!--- Пока что я думаю эта инфа лишняя, может потом верну и раскомментирую
|
||||
### Чутка про префикс REX
|
||||
|
||||
|
||||
Reference in New Issue
Block a user