【发布时间】:2012-09-21 06:41:42
【问题描述】:
考虑这个 x64 NASM 语法程序集:
inc qword [rax]
inc qword [rcx]
inc qword [rdx]
inc qword [rbx]
inc qword [rsp]
inc qword [rbp]
inc qword [rsi]
inc qword [rdi]
使用 nasm 组装(并与 gnu ld 链接)后,objdump -d 报告以下内容:
4000b0: 48 ff 00 incq (%rax)
4000b3: 48 ff 01 incq (%rcx)
4000b6: 48 ff 02 incq (%rdx)
4000b9: 48 ff 03 incq (%rbx)
4000bc: 48 ff 04 24 incq (%rsp)
4000c0: 48 ff 45 00 incq 0x0(%rbp)
4000c4: 48 ff 06 incq (%rsi)
4000c7: 48 ff 07 incq (%rdi)
为inc qword [rbp] 生成的代码是有意义的,因为设置了 mod 字段。但是,在组装inc qword [rsp] 时,我无法弄清楚24 的来源。我一直在查看coder64 #xFF,但没有任何迹象表明应该生成 24。我显然错过了更高层次的东西。
【问题讨论】:
标签: assembly 64-bit nasm machine-code