指针寄存器(instruction pointer, RIP.)X86-64的RIP可以切分成32位的EIP 和 16位IP,CPU是几位模式下就只能使用对应的指针寄存器。 状态寄存器(status register, RFLAGS) RFLAGS也有32位和16位版本,分别是EFLAGS 和 FLAGS。但是EFLAGS 和 FLAGS可以同时使用。 32位的状态寄存器 CF: 进位标志 PF : 奇偶标志 ZF :...
除了扩展原来存在的通用寄存器,x64架构还引入了8个新的通用寄存器: r8-r15 在原来32位时代,函数调用时,那个时候通用寄存器少,参数绝大多数时候是通过线程的栈来进行传递(当然也有使用寄存器传递的,比如著名的C++this指针使用ecx寄存器传递,不过能用的寄存器毕竟不多)。 进入x64时代,寄存器资源富裕了,参数传递绝大多数...
在x86-64架构下,以下是一些常用的汇编命令及其介绍: mov - 将数据从一个位置移动到另一个位置。例如,mov eax, 1 将数值1放入eax寄存器。 push - 将一个寄存器的值压栈。例如,push rbp 将当前基指针的值压入堆栈。 pop - 将堆栈顶部的值弹出到一个寄存器中。例如,pop rbp 将堆栈顶部的值弹出到基指针寄存...
x86-64是1999年由AMD设计,AMD首次公开64位集以扩充给IA-32,称为x86-64(后来改名为AMD64)。AMD64架构在IA-32上新增了64位寄存器,并兼容早期的16位和32位软件,因此许多操作系统以及产品,尤其是在Intel开发Intel64之前就引入x86-64支持的,使用AMD64同时指代AMD64和Intel64。Intel64是后续支持了AMD64,不过不愿意叫...
主要记录X86_64位CPU中常被使用的寄存器,以下将按照分类进行详解。通用寄存器 (general register) 是执行日常程序时最常接触的寄存器。16位的寄存器通常可以访问其高8位的数据;而32位寄存器则提供更广泛的数据存储能力。特殊寄存器 (Special registers) 包括 RFLAGS,其有32位和16位版本,分别是EFLAGS 和...
32 位 x86 CPU 包括 8 个通用寄存器。64 位 x64 处理器有 16 个寄存器。 Itanium 处理器拥有更先进的寄存器引擎(128 个浮点寄存器和120 个通用寄存器),并且支持更复杂的寄存器操作,这些都是通过全新的体系结构实现的。通过提供更多寄存器以及更多寄存器空间,64 位处理器(以及为它们编写的应用程序和操作系统)可以...
寄存器名称寄存器含义1寄存器含义2寄存器含义3 %rax 存储函数调用的返回结果 在imul 指令中,两个64位的乘法最多会产生128位的结果,需要 %rax 与 %rdx 共同存储乘法结果 在div 指令中被除数是128 位的,同样需要%rax 与 %rdx 共同存储被除数 %rsp 堆栈指针寄存器,通常会指向栈顶位置 %rbp 栈帧指针,用于标识...
x86与x64架构的通用寄存器名称有所不同,x86架构有八个通用寄存器:eax, ebx, ecx, edx, esi, edi, esp和ebp。而x64架构的通用寄存器则有十六个:rax, rbx, rcx, rdx, rsi, rdi, rsp, rbp, r8, r9, r10, r11, r12, r13, r14和r15。x64架构在寄存器命名规则上与x86有所不同。在x86...
寄存器 X86-64大约有16个64位整数寄存器,其中栈指针rsp和基址指针rbp较为特殊,rsi和rdi跟处理字符串相关。后面的八个寄存器是编号的,使用起来没有特殊限制。 rax rbx rcx rdx rsi rdi rbp rsp r8 - r15 其中rax的结构如下 [image:ECA803C6-AECB-4593-8CAA-34CF915FBC41-86030-0001242002E5C3CA/20171008192750...