我在哪里可以找到姓名的新的机会就这一架构?

我指的是登记在X86像EAX,ESP,EBX,等等。但我想他们在64位.

我不认为他们是相同的,因为当我拆开我的代码,我得到的而不是电子的。

有帮助吗?

解决方案

老32位寄存器已经扩展到64位, r 寄存器(rax, rbx, rsp 等等)。

此外,还有一些额外的一般目的寄存器 r8 通过 r15 这也可作为(例如) r8d, r8wr8b (较低的32位的双字,16位字和8位字节的分别)。的 b 后缀原AMD命名法但是有时你会看到它写作 l (较低的情况下 L)对于"低字节".

我倾向于喜欢的 b 缀自己的(即使目前的低字节寄存器 al, bl, 等等),因为它相匹配的 d/w = double/word 名字和 l 可能被误认为 long.或者,更糟糕的是,数字 1, ,导致你的问题什么注册号码 81 是:-)

高字节的老16位寄存器仍然访问,在许多情况下,作为 ah, bh, 等等(虽然这似乎不是这种情况对新的 r8 通过 r15 寄存器)。还有一些新的 指令中的编码 特别是那些使用 REX 前缀,不能访问那些字节的原始高,但其他人仍然可以自由使用他们。

此外,还有一些新的证寄存器, xmm8 虽然 xmm15.

eipeflags 寄存器也已经扩展到 riprflags(虽然高的32位的 rflags 是的,对现在仍未使用的).

看看 维基百科页MSDN 更多的细节。

这些是否是支持在 asm 关键词的特定C编译器,我不能说。什么小会我做(以及它成为有关一天,一个年)是在大会,而不是C.


相关:

其他提示

MSDN文档包括关于x64的寄存器的信息。

  

64延伸64的8个通用   寄存器是64位,并增加了8个新的   64位寄存器。的64位寄存器   有“R”开头的名字,所以   例如EAX的64位扩展为   叫獭兔。新寄存器   通过R15 R8命名

     

的低32位,16位和8位   每个寄存器的直接   寻址的操作数。这包括   寄存器,像ESI,其低8   位以前都没有寻址。   下表指定的   对于较低的汇编语言名   的64位寄存器的部分。

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

X64延伸的32位通用寄存器,如下所示:

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向量寄存器可以及

您可以在维基百科/ X86-64 或发现在建筑的一些基本信息到英特尔的网站。

让我们读英特尔手册

我在哪里可以找到姓名的新的寄存器用于大会这一架构。

在处理器的手册"的英特尔64和32架构软件开发人员手册,第1卷:基本架构",例如 版本253665-053US:

  • 搜索"寄存器"
  • 第一场比赛是索引"3.4基本程序的执行寄存器"
  • 两个项目下面的"3.4.1.1一般用途的注册在64位模式"

在那个部分:

如果有64位的操作数长度是规定:RAX,RBX,X, RDX,RDI,RSI,RBP、RSP,R8-R15。R8D-R 15D/R8-R15代表八个新的一般目的的登记册。

提醒:64位的模式是"正常的"模式在x86-64.其他的主要模式是"兼容性模式的"模拟IA32.

如果你继续寻找"注册"上目录,你也会发现部分"号破碎"寄存器浮点和单指令散的手册:

  • 8.1.2-x87FPU数据注册(STx)
  • 9.9.2-寄存器试试吧
  • 10.2.2-XMM寄存器
  • 14.1.1-256位的广泛的单指令支持登记册(集团)

还有更多的控制寄存器具有的各种副作用和可以一般不以书面以除非你想要那些影响(而且常常 要求环0).这些都总结在"第3卷系统编程指南 -2.1.6系统寄存器",这是更为操作系统开发者。

一个很好的实验方法是运行 info all-registers 在库: 如何打印的登记册的价值在广?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top