汇编寄存器介绍

1. 通用寄存器

名称全称32位16位8位编号功能
%rax累加器(Accumulator)%eax%ax%ah %al0 (0000)返回值
%rcx计数器(Count Register)%ecx%cx%ch %cl1 (0001)第二个参数
%rdx数据寄存器(Data Register)%edx%dx%dh %dl2 (0010)第三个参数
%rbx基址寄存器(Base Register)%ebx%bx%bh %bl3 (0011)被调用者保存
%rsp堆栈指针寄存器(Stack Pointer)%esp%sp%spl4(0100)栈顶指针
%rbp基址指针寄存器(Base Pointer)%ebp%bp%bpl5(0101)被调用者保存
%rsi源变址寄存器(Source Index)%esi%si%sil6(0110)第二个参数
%rdi目的变址寄存器(Destination Index)%edi%di%dil7(0111)第一个参数
%r8通用%r8d%r8w%r8b8(1000)第五个参数
%r9通用%r9d%r9w%r9b9(1001)第六个参数
%r10通用%r10d%r10w%r10b10(1010)调用者保存
%r11通用%r11d%r11w%r11b11(1011)调用者保存
%r12通用%r12d%r12w%r12b12(1100)被调用者保存
%r13通用%r13d%r13w%r13b13(1101)被调用者保存
%r14通用%r14d%r14w%r14b14(1110)被调用者保存
%r15通用%r15d%r15w%r15b15(1111)被调用者保存

2. 段寄存器

名称全称功能
%cs代码段寄存器(Code Segment)代码段基址
%ds数据段寄存器(Data Segment)默认数据段基址
%ss堆栈段寄存器(Stack Segment)堆栈段基址
%es扩展段寄存器(Extra Segment)扩展段基址
%fs扩展段寄存器(e 后面是 f,按顺序排列,没有语义)扩展段基址
%gs扩展段寄存器(f 后面是 g,按顺序排列,没有语义)扩展段基址

3. 其它寄存器

名称全称32位16位8位编号功能
%rip指令指针寄存器(Instruction Pointer)%ip---当前执行的指令
%rflags标志位(Flags)%eflags---标志位

4. 寄存器缩写含义

  1. %ah中的h : High
  2. %al中的l : Low
  3. %eax中的e : Extend
  4. %rax中的r : 应该是Register,不确定
  5. b : byte
  6. w : word

5. 函数调用中用到的寄存器

// 伪代码
func name(a, b, c, d, e, f) {
    return g;
}

调用函数时参数a,b,c,d,e,f依次保存到%rdi,%rsi,%rdx,%rcx,%r8,%r9中,返回值g保存到%rax

  • 0
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值