X86-64的16个通用寄存器

X86-64体系结构拥有16个64位通用寄存器,这些寄存器扩展自8086的16位寄存器,如%rax到%rsp。在向64位扩展时,不仅原有的8个32位寄存器变为64位,还新增了%r8至%r15这8个寄存器。这些寄存器用于整数数据和指针的存储,参与运算和内存寻址,例如累加器%rax在加法和乘法中常用,%cx用于循环计数,%si和%di则常用于存储器操作数的地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

X86-64的16个通用寄存器

X86-64的16个通用寄存器

目前64位的cpu共有16个通用寄存器,这些寄存器用来存储整数数据和指针,以%r(register)开头,后面跟着一些不同命名规则的名字,如下图所示;初始的8086有8个16位寄存器从%ax~%sp,扩展到IA32架构时,这些寄存器扩展成32位寄存器,标号以%e(extense)开头从%eax ~ %esp;扩展到X86-64时,原来的8个32位寄存器扩展成64位寄存器,并且还增加了8个寄存器,它们的标号命名规则为%r8 ~%r15。

ax(accumulator) 累加器由ah(高8位)和al(低8位)组成,它是很多加法乘法指令的缺省寄存器,用累加器进行的操作可能需要更少时间
bx(base) 基地址寄存器,在内存寻址时存放基地址。
cx(counter) 计数寄存器,在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用cl来指明位移的位数。
dx(data) 数据寄存器 用来存放整数除法产生的余数。
si(source index) 源索引寄存器/di(destination index) 目标索引寄存器,它们主要用于存放存储单元的源地址和目的地址的指针,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。
bp(base point) 基址指针寄存器,作为当前函数的栈基址。
sp(stack point) 栈指针寄存器,专门用作堆栈指针,作为当前函数的栈顶指针。
整数寄存器-摘自csapp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值