【发布时间】:2015-05-06 15:49:36
【问题描述】:
是否有与 NASM 的“DEFAULT REL”指令等效的 GAS?
我正在尝试将一些 NASM 程序集移植到 GAS,具体来说,我正在挂断原始文件中使用 CEXTERN 声明的存储。
原始 NASM:
SECTION .text
cextern pw_8000
...
...
movq m7, [pw_8000]
当我组装文件并尝试链接它时,我看到以下内容:
ld: common/x86/dct-a.o: relocation R_X86_64_32S against `x264_pw_8000' 在制作共享对象时不能使用;用 -fPIC 重新编译
使用 YASM,调用 DEFAULT REL 似乎可以解决此问题。我不知道如何用 GAS 做到这一点。
有什么想法吗?
编辑: 根据this post看来,移动命令可以写成
movq m7, [rip+pw_8000]
有谁知道这是否正确
【问题讨论】:
-
是的,假设您使用的是 intel 语法并且
m7已被定义为寄存器的别名,这是正确的。