1. x87 浮点指令格式
上图是 x87 浮点指令编码格式,这和 x86 的通用指令格式几乎一样,只是少了 immediate 部分
这些是原来的 prefix,即:
但是,仅有对 memory 操作数进行修饰的 legacy prefix 才有效,即:address-size override prefix 与 segment override prefix
而其它 prefix 将会被忽略,即:operand size override prefix、lock prefix、rep/repz prefix 与 repnz prefix 将被忽略。
关于 legacy prefix 详见:深入了解 prefix
对于 x87 指令来说,REX prefix 作用于 memory 操作数寻址上,对 64 位地址中的 base 与 index 寄存器进行寻址。
这和通用指令中的 memory 操作数寻址的 REX prefix 是一致的。
x87 浮点指令的 opcode 范围从 D8 ~ DF 共 8 个 opcode
x87 指令中的 ModRM 部分最大的作用是对 opcode 的补充。
对于有 operands 的 x87 指令来说,ModRM.reg 进行 opcode 补充,ModRM.mod 与 ModRM.r/m 进行 operands 寻址。
而对于无 operadns 的 x87 指令来说,ModRM.reg 和 ModRM.r/m 都可以进行 opcode 补充。
和通用指令一样,SIB 字节是对 ModRM 字节的 memory 寻址的辅助寻址。
和通用指令一样,这部分提供 memory 操作数中的 offset 值。
mik 写于 2009-05-17 00:38