x86指令编码与浮点处理编程全解析
1. x86指令编码基础
1.1 地址位移和立即数据字段
在x86指令编码中,地址位移字段用于存放操作数的偏移量,也可在基址 - 位移或基址 - 变址 - 位移等寻址模式中与基址和变址寄存器相加。立即数据字段则用于存放常量操作数。
1.2 单字节指令
单字节指令是最简单的指令类型,它要么没有操作数,要么有隐含操作数。这类指令只需要操作码字段,其值由处理器的指令集预先确定。以下是一些常见的单字节指令及其操作码:
| 指令 | 操作码 |
| ---- | ---- |
| AAA | 37 |
| AAS | 3F |
| CBW | 98 |
| LODSB | AC |
| XLAT | D7 |
| INC DX | 42 |
1.3 将立即数移动到寄存器
立即操作数(常量)以小端序(最低字节在前)附加到指令之后。以将立即字移动到寄存器的MOV指令为例,其编码格式为B8 + rw dw,其中操作码字节值为B8 + rw,表示将寄存器编号(0到7)加到B8上;dw是立即字操作数,最低字节在前。寄存器编号如下表所示:
| 寄存器 | 代码 |
| ---- | ---- |
| AX/AL | 0 |
| CX/CL | 1 |
| DX/DL | 2 |
| BX/BL | 3 |
| SP/AH | 4 |
| BP/CH | 5 |
| SI/DH | 6 |
| DI/BH | 7 | <
超级会员免费看
订阅专栏 解锁全文
3

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



