深入理解AT&T指令助记符与C库随机数生成
1. 理解AT&T指令助记符
x86 CPU存在多套指令助记符,这常常令人困惑。指令助记符是人类记忆二进制位模式对CPU含义的方式,例如用 MOV BX,AX 代替 1000100111000011 (十六进制为 89C3h )。需要注意的是,助记符只是帮助人类记忆的工具,CPU本身并不识别。汇编器会将助记符转换为机器指令。
AT&T助记符的出现是为了让Unix更易于移植到不同的机器架构。如果你的目标是全面高效地掌握x86 CPU,使用Intel助记符编写代码会更好;而AT&T助记符在理解gcc编译器和标准C库时很有用。
2. AT&T助记符约定
当gcc将C源代码文件编译为机器代码时,实际上是先将C源代码转换为使用AT&T助记符的汇编语言源代码。gcc编译器接收 .c 源代码文件作为输入,输出 .s 汇编源文件,然后将其交给GNU汇编器 gas 进行汇编。
以下是AT&T助记符的一些通用规则:
- 大小写 :AT&T助记符和寄存器名始终为小写,这遵循了Unix区分大小写的约定。Intel(以及NASM)建议使用大写,但也接受小写,而AT&T要求使用小写。
- 寄存器名前缀 :寄存器名前始终带有百分号 % ,例如Intel
超级会员免费看
订阅专栏 解锁全文

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



