在读《天书夜谈》那个pdf时,好多地方没有理解(自己太菜了),其中有一个地方是说指令格式的:说intel指令可分为一下部分:
前缀(可选) 操作码 ModR/M(可选) SIB(可选) 地址偏移(可选) 立即操作数(可选)
前缀:指令前缀,包括加锁,重复等信息。每个前缀1 个字节。但是最多可能有4 个前缀。
操作码:指令的机器编码。可能占有1-3 个字节。一般只有一个操作码。
ModR/M:修改的寄存器与存储器。如果有,则必为1 个字节。
SIB:和ModR/M 相关。一些特殊的寻址指令需要的信息(Scale,Index,Base)。如果有,必为1 字节。
地址偏移:取决于寻址方式的需要。可能为1,2,4 字节。
立即操作数:取决于寻址方式的需要。可能为1,2,4 字节。
这些地方有些笼统,不知道哪里有详细的介绍,麻烦知道一下,或者提供资料。
谢谢大家
------解决方案--------------------------------------------------------
看的多就理解了。比如:
mov ax,0001;mov是操作码,ax是寄存器,0001是立即数。
------解决方案--------------------------------------------------------
是呀,其实有很多的问题都是这样,你先把定义搞明白之后,再看实例。再回套就容易明白点。
例如:
cmp es: byte ptr [di],01
你向回套一下,就会明白点。
------解决方案--------------------------------------------------------
这书描述得的确让人乍看起来摸不着头脑,如果只是指指令格式的话,应该是助记符+最多3个操作数,例如shrd eax,ebx,4
------解决方案--------------------------------------------------------
楼主提及的内容是指机器码的格式吧, 不是助记符化了的汇编指令格式.