x86汇编通用寄存器用途一览

本文介绍了64位和32位架构下通用寄存器的用途,如rax、eax等在系统调用、函数调用和乘除运算中的角色,并提到了AT&T汇编的helloworld示例和相关参考资料,如Intel官方文档和Linux系统调用参数寄存器。
摘要由CSDN通过智能技术生成

写在前面

intel官方文档链接:Intel64和IA-32架构软件开发者手册
具体在Combined Volume Set of Intel® 64 and IA-32 Architectures Software Developer’s Manuals这本手册
(五千页我的天。。。)

不想翻阅英文的可以直接看下面的概括:主要是64位下寄存器的用途,以及他们仅使用低位时的名称,捎带一些32位模式下的不同用法

通用寄存器

64位寄存器名称用途32位寄存器名称32位下用途16位8位
rax保存系统调用号、函数调用的返回值、乘法运算结果的低64位、除法运算被除数的低64位、除法运算结果的商eaxaxal
rbxebx函数调用的第1个参数bxbl
rcxecx函数调用的第2个参数cxcl
rdx函数调用的第3个参数、乘法运算结果的高64位、除法运算被除数的高64位、除法运算结果的商edx用作函数调用的第3个参数dxdl
rdi函数调用的第1个参数edi用作函数调用的第5个参数didil
rsi函数调用的第2个参数esi函数调用的第4个参数sisil
rbpbase pointer,标识栈帧的起始位置;在函数调用的时候更改以分配栈空间(个人理解)rbp用作函数调用的第6个参数bpbpl
rsp永远指向栈顶,函数调用的时候需要先压栈保存espspspl
r8函数调用的第5个参数r8dr8wr8b
r9函数调用的第6个参数r9dr9wr9b
r10函数调用的第4个参数r10dr10wr10b
r11随便用(个人理解)r11dr11wr11b
r12随便用(个人理解)r12dr12wr12b
r13随便用(个人理解)r13dr13wr13b
r14随便用(个人理解)r14dr14wr14b
r15随便用(个人理解)r15dr15wr15b



汇编入门程序

AT&T汇编入门[0] hello world

参考资料

Combined Volume Set of Intel® 64 and IA-32 Architectures Software Developer’s Manuals
乘法和除法中rax和rdx寄存器的用途:

在这里插入图片描述
在这里插入图片描述

64位扩展下的寄存器名称:
在这里插入图片描述
在这里插入图片描述

linux系统man syscall:
第1-6个参数寄存器

在这里插入图片描述

系统调用号、返回值寄存器:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值