如何解决为什么 GNU 为内存写入添加偏移量?
所以我今天在玩一些程序集,我注意到在使用 as -o foo.o foo.s
编译以下代码时,我得到了与预期不同的结果:
.section .text
.globl _start
.intel_syntax noprefix
_start:
mov rsi,rsp
mov rdx,0x1234567890ABCDEF
mov qword [rsi],rdx
... 编译为:
# objdump -D -M intel foo.o
oo.o: file format elf64-x86-64
Disassembly of section .text:
0000000000000000 <_start>:
0: 48 89 e6 mov rsi,rsp
3: 48 ba ef cd ab 90 78 movabs rdx,0x1234567890abcdef
a: 56 34 12
d: 48 89 56 08 mov QWORD PTR [rsi+0x8],rdx
我想知道为什么 as
会在内存写入中添加另一个 0x8(qword [rsi]
与 QWORD PTR [rsi+0x8]
)??!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。