【发布时间】:2015-04-24 05:59:33
【问题描述】:
查看 x86 操作码映射如下:
http://www.mlsite.net/8086/#tbl_map1
它定义了映射,例如:
00: ADD Eb,Gb
01: ADD Ev,Gv
...
该链接对字母的含义进行了基本描述,例如:
- E:ModR/M 字节跟随操作码并指定操作数。操作数要么是通用寄存器,要么是内存地址。如果它是内存地址,则地址是根据段寄存器和以下任何值计算得出的:基址寄存器、索引寄存器、位移。
- b:字节参数。
但它有点太模糊了。您如何将其实际转换为“完整的操作码”(整个指令+操作码中的参数)?也无法从Intel manuals 中弄清楚,也许我找错了地方(而且有点不知所措)?看到一个 sn-p 显示输入指令的输出操作码(以及你是如何做到的)会非常有帮助。
【问题讨论】:
-
无论如何,请使用英特尔手册。对于每条指令,它都给出了机器代码,第 2 章对指令格式进行了非常详细的描述。
-
不确定你在问什么;英特尔参考手册正是这样做的。您发布的链接似乎通过引入没人使用的术语使事情过于复杂。
-
@duskwuff 你确定吗?我以为x86 was totally retrocompatible,
-
@m0skit0 8086 的操作码映射不一定包含自 1978 年 8086 发布以来添加或更改的大量 x86 指令。
-
@duskwuff 我明白了,我误解了你。我认为一个更好的词是不完整。
标签: assembly x86 machine-code