汇编语言与相关架构技术详解
1. 字符、指令与宏
1.1 字符与指令对应
在汇编语言中,存在着字符与十六进制代码以及 x86 指令的对应关系,如下表所示:
| 字符 | 十六进制代码 | x86 指令 | 说明 |
| — | — | — | — |
| u | 75 | JNE | |
| v | 76 | JBE | |
| w | 77 | JA | |
| x | 78 | JS | |
| y | 79 | JNS | |
| z | 7a | JP | |
| f | 66 | (in 32 - bit mode) switch to 16 - bit operand size | |
| g | 67 | (in 32 - bit mode) switch to 16 - bit address size | |
此外,还有一些常见指令总结,如 AAA、AAS、CMP、DEC、IMUL、INC、JA、JAE、JB、JBE、JE、JNE、JNO、JNS、JO、JP、JS、POP、POPA、PUSH、PUSHA、XOR 等。
1.2 npad 宏
npad 是一个用于在特定边界对齐标签的汇编语言宏。在控制流经常跳转的繁忙标签处,如循环体起始位置,这种对齐是很有必要的,这样 CPU 可以通过内存总线、缓存行等有效加载数据或代码。
以下是 npad 宏的代码实现:
npad macro size
if size eq 1
nop
el