diff --git a/02-cpu-commnads/README.md b/02-cpu-commnads/README.md index 8ab42ec..35f5309 100644 --- a/02-cpu-commnads/README.md +++ b/02-cpu-commnads/README.md @@ -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-битных операций другие опкоды и хотя бы на них не надо префиксы запоминать) +