From 3ff51630f5e3069ea9a5dd864d28cf0aebd073d7 Mon Sep 17 00:00:00 2001 From: Miheev Egor Date: Wed, 18 Sep 2024 23:41:20 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BF=D1=80=D0=B8=D0=BC=D0=B5=D1=87=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=BA=20=D0=B8=D0=BD=D1=81=D1=82=D1=80=D1=83=D0=BA?= =?UTF-8?q?=D1=86=D0=B8=D0=B8=20=D0=BF=D0=BE=20=D0=BA=D0=BE=D0=B4=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02-cpu-commnads/README.md | 7 +++++++ 1 file changed, 7 insertions(+) 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-битных операций другие опкоды и хотя бы на них не надо префиксы запоминать) +