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) 栈指针寄存器,专门用作堆栈指针,作为当前函数的栈顶指针。