Assembly 在此x86指令中,d在%r11d中指的是什么?

Assembly 在此x86指令中,d在%r11d中指的是什么?,assembly,x86,x86-64,Assembly,X86,X86 64,我有一个函数fn(),它在堆栈上分配一个64字节的缓冲区,然后调用get函数注意:我使用gets覆盖堆栈上的返回地址 void fn() { char buf[64]; gets(buf); } 该代码已使用针对本机客户端的修改的gcc编译器编译。如果我们查看地址20243,我们将堆栈的顶部弹出到寄存器r11中。然后,在下一行,我们将该寄存器的内容移动到%ebp中 但是,我不明白%r11d末尾的d指的是什么。我在x86指令集中找不到引用(可能我错过了),所以可能是GAS语法吗?

我有一个函数fn(),它在堆栈上分配一个64字节的缓冲区,然后调用get函数注意:我使用gets覆盖堆栈上的返回地址

void fn() {
    char buf[64];
    gets(buf);
}
该代码已使用针对本机客户端的修改的gcc编译器编译。如果我们查看地址20243,我们将堆栈的顶部弹出到寄存器r11中。然后,在下一行,我们将该寄存器的内容移动到%ebp中

但是,我不明白
%r11d
末尾的d指的是什么。我在x86指令集中找不到引用(可能我错过了),所以可能是GAS语法吗?有人能解释一下吗

0000000000020220 <fn>:
   20220:       55                      push   %rbp
   20221:       48 89 e5                mov    %rsp,%rbp
   20224:       83 ec 40                sub    $0x40,%esp
   20227:       4c 01 fc                add    %r15,%rsp
   2022a:       8d 45 c0                lea    -0x40(%rbp),%eax
   2022d:       89 c7                   mov    %eax,%edi
   2022f:       66 66 66 2e 0f 1f 84    data32 data32 nopw %cs:0x0(%rax,%rax,1)
   20236:       00 00 00 00 00
   2023b:       e8 a0 12 00 00          callq  214e0 <gets>
   20240:       48 89 ec                mov    %rbp,%rsp
   20243:       41 5b                   pop    %r11
   20245:       44 89 dd                mov    %r11d,%ebp
   20248:       4c 01 fd                add    %r15,%rbp
   2024b:       41 5b                   pop    %r11
   2024d:       41 83 e3 e0             and    $0xffffffe0,%r11d
   20251:       4d 01 fb                add    %r15,%r11
   20254:       41 ff e3                jmpq   *%r11
   20257:       66 0f 1f 84 00 00 00    nopw   0x0(%rax,%rax,1)
0000000000020220:
20220:55%按需付费
20221:48 89 e5 mov%rsp,%rbp
20224:83 ec 40子$0x40,%esp
20227:4c 01 fc添加%r15,%rsp
2022a:8d 45 c0 lea-0x40(%rbp),%eax
2022d:89 c7 mov%eax%edi
2022f:66 66 2e 0f 1f 84数据32 nopw%cs:0x0(%rax,%rax,1)
20236:       00 00 00 00 00
2023b:e8 a0 12 00 00 callq 214e0
20240:48 89 ec mov%rbp,%rsp
20243年:41.5亿南非兰特
20245:44 89日折旧变动率%r11d,%ebp
20248:4c 01 fd添加%r15,%rbp
2024b年:41.5亿流行音乐%r11
2024d:41 83 e3 e0和$0xFFFFFF0,%r11d
20251:4d 01 fb添加%r15,%r11
20254:41 ff e3 jmpq*%r11
20257:66 0f 1f 84 00 nopw 0x0(%rax,%rax,1)
引用自:

寄存器集扩展
X86-64定义了八个名为r8-r15的新整数寄存器。这些寄存器使用特殊REX前缀编码,因此在非64位指令中使用它们意味着指令长度增加1字节。它们的名称如下:

8位寄存器的rXb(包含64位值的最低字节)
16位的rXw
32位的rXd
用于64位的rX


d=双字,w=字,b=字节