x86指令编码与浮点处理全面解析
1. x86指令编码基础
1.1 地址位移和立即数据字段
在x86指令编码中,地址位移字段用于存放操作数的偏移量,它也能在基址 - 位移或基址 - 变址 - 位移等寻址模式下,与基址寄存器和变址寄存器相加。而立即数据字段则用于存放常量操作数。
1.2 单字节指令
单字节指令是最简单的指令类型,它要么没有操作数,要么有隐含操作数。这类指令只需要操作码字段,其值由处理器的指令集预先确定。以下是一些常见的单字节指令及其操作码:
| 指令 | 操作码 |
| ---- | ---- |
| AAA | 37 |
| AAS | 3F |
| CBW | 98 |
| LODSB | AC |
| XLAT | D7 |
| INC DX | 42 |
例如, INC DX 指令虽然看起来可能不太符合单字节指令的常规模式,但指令集的设计者为某些常用指令提供了独特的操作码,这样寄存器增量操作在代码大小和执行速度上都得到了优化。
1.3 立即数移动到寄存器
立即操作数(常量)以小端序(最低字节在前)附加到指令中。我们先关注将立即值移动到寄存器的指令,暂时避开内存寻址模式的复杂性。将立即字移动到寄存器的 MOV 指令的编码格式为 B8 + rw dw ,其中操作码字节值为 B8 + rw ,表示将寄存器编号(0 到 7)加到 B8 上;
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



