42、深入理解AT&T指令助记符与随机数生成

深入理解AT&T指令助记符与随机数生成

1. 理解指令助记符

在x86 CPU中,存在不止一套指令助记符,这常常导致混淆。指令助记符是人类用来记住二进制位模式(如1000100111000011)对CPU意义的方式。例如,我们用“MOV BX,AX”来代替连续写16个1和0(或稍易理解的十六进制89C3h)。

需要注意的是,助记符只是帮助人类记忆的工具,CPU本身并不认识它们。汇编器会将助记符翻译成机器指令。虽然我们约定“MOV BX,AX”对应1000100111000011,但这个字符串本身并没有什么神奇之处,我们也可以用“COPY AX TO BX”等表述。我们使用“MOV BX,AX”是因为英特尔建议这样做,毕竟英特尔设计和制造CPU芯片,最清楚如何描述其内部结构。

2. AT&T指令助记符的起源

另一套x86指令助记符——AT&T助记符,源于让Unix尽可能容易移植到不同机器架构的需求。不过,操作系统实现者的目标和汇编语言程序员的目标不同。如果你的目标是全面、高效地掌握x86 CPU,那么使用英特尔的助记符集编写代码会更好。而AT&T助记符在理解gcc编译器和标准C库时很有用。

3. AT&T助记符的约定

当gcc将C源代码文件编译成机器代码时,实际上是先使用AT&T助记符将C源代码翻译成汇编语言源代码,再交给GNU汇编器gas进行汇编。这是GNU工具在所有平台上的工作方式。从某种意义上说,汇编语言是C编译器使用的中间语言,大多数情况下程序员不会看到或处理它,但如果要处理标准C库和其他用C编写的函数库,了解AT&T助记符是有必要的。以下是一些通用规

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值