Assembly 新X86_64处理器寄存器的名称是什么?
在何处可以找到此体系结构上用于组装的新寄存器的名称 我指的是X86中的寄存器,如EAX、ESP、EBX等,但我希望它们是64位的Assembly 新X86_64处理器寄存器的名称是什么?,assembly,x86,x86-64,cpu-registers,Assembly,X86,X86 64,Cpu Registers,在何处可以找到此体系结构上用于组装的新寄存器的名称 我指的是X86中的寄存器,如EAX、ESP、EBX等,但我希望它们是64位的 我不认为它们与我反汇编C代码时得到的是r而不是e是一样的 旧的32位寄存器已扩展到64位,r寄存器(rax,rbx,rsp等等) 此外,还有一些额外的通用寄存器r8到r15,它们也可以访问为(例如)r8d、r8w和r8b(分别是较低的32位双字、16位字和8位字节)。b后缀是最初的AMD术语,但有时您会看到它被写成l(小写l)表示“低字节” 我自己倾向于选择b后缀(即
我不认为它们与我反汇编C代码时得到的是r而不是e是一样的 旧的32位寄存器已扩展到64位,
r
寄存器(rax
,rbx
,rsp
等等)
此外,还有一些额外的通用寄存器r8
到r15
,它们也可以访问为(例如)r8d
、r8w
和r8b
(分别是较低的32位双字、16位字和8位字节)。b
后缀是最初的AMD术语,但有时您会看到它被写成l
(小写l
)表示“低字节”
我自己倾向于选择b
后缀(即使当前的低字节寄存器是al
,bl
,等等),因为它与d/w=double/word
名称匹配,l
可能会被误认为long
。或者,更糟糕的是,数字1
,这会让您质疑heck寄存器编号81
是什么:-)
在许多情况下,旧16位寄存器的高位字节仍然可以访问,如ah
、bh
,等等(尽管新的r8
到r15
寄存器的情况似乎并非如此)。有一些新的指令编码,特别是那些使用REX
前缀的指令编码,无法访问原始的高字节,但其他指令编码仍然可以自由使用它们
此外,还有一些新的SSE寄存器,xmm8
尽管xmm15
eip
和eflags
寄存器也已扩展到rip
和rflags
(尽管rflags
的高32位目前仍未使用)
有关更多详细信息,请参阅和
对于特定的C编译器,asm
关键字是否支持这些,我不能说。我所做的一点汇编(现在大约一年有一天)是在汇编中完成的,而不是在C中完成的
相关的:
EAX -> RAX
EBX -> RBX
ECX -> RCX
EDX -> RDX
ESI -> RSI
EDI -> RDI
ESP -> RSP
EBP -> RBP
X64还添加了以下64位通用寄存器:
R8, R9, R10, R11, R12, R13, R14, R15
此外,SSE是X64规范的一部分,因此xmm0-xmm15矢量寄存器也可用
您可以在英特尔网站上找到有关该体系结构的一些基本信息。包括有关x64寄存器的信息
x64扩展了x64的8通用功能
寄存器为64位,并添加8个新的
64位寄存器。64位寄存器
名字以“r”开头,所以
示例eax的64位扩展是
叫rax。新的登记册是
命名为r8到r15
较低的32位、16位和8位
每个寄存器的
可在操作数中寻址的。这包括
寄存器,如esi,其下限为8
位以前不可寻址。
下表指定了
较低版本的汇编语言名称
64位寄存器的一部分
让我们阅读英特尔手册 在哪里可以找到此体系结构上用于组装的新寄存器的名称 在处理器手册“英特尔64和IA-32体系结构软件开发人员手册第1卷:基本体系结构”中,例如:
- 搜索“注册表”
- 第一个匹配项是索引“3.4基本程序执行寄存器”
- “3.4.1.1 64位模式下的通用寄存器”下面的两项
- 8.1.2-x87 FPU数据寄存器(STx)
- 9.9.2-MMX寄存器
- 10.2.2-XMM寄存器
- 14.1.1-256位宽SIMD寄存器支持(YMM)
一个好的经验方法是在GDB中运行
info all registers
:伙计们,在执行系统调用时,我如何判断哪些寄存器与参数相关。我一直在阅读和文档,没有找到明确的答案。请注意,旧的高8位寄存器(ah、bh等)不再适用于所有操作码。e、 g.inc ah
在x64中无效,因为该操作码已被重新用于一个新的64位寄存器。@Johan:还要注意,使用REX前缀,ah bh ch dh的寄存器代码将成为新的字节寄存器sil dil bplspl@int80,不知道。也许e
表示扩展,而r
表示真正扩展:-)我知道“e”代表扩展(从16位开始)。但是r?但是你的答案是正确的,这是不正确的。使用REX
前缀时,不能使用上半部分(ah
,bh
,ch
,dh
),因为它们分别映射到其他寄存器的下半部分(si
,bp
,sp
,di
)。这意味着如果您在r8
中存储了地址,则无法将ah
的内容移动到此地址。@Fotis,哪个bi
64-bit register | Lower 32 bits | Lower 16 bits | Lower 8 bits
==============================================================
rax | eax | ax | al
rbx | ebx | bx | bl
rcx | ecx | cx | cl
rdx | edx | dx | dl
rsi | esi | si | sil
rdi | edi | di | dil
rbp | ebp | bp | bpl
rsp | esp | sp | spl
r8 | r8d | r8w | r8b
r9 | r9d | r9w | r9b
r10 | r10d | r10w | r10b
r11 | r11d | r11w | r11b
r12 | r12d | r12w | r12b
r13 | r13d | r13w | r13b
r14 | r14d | r14w | r14b
r15 | r15d | r15w | r15b