等同于 NASM' DEFAULT REL 指令的 GAS 是多少?
What's the GAS equivalent to NASM' DEFAULT REL directive?
是否有等同于 NASM 的 'DEFAULT REL' 指令的 GAS?
我正在尝试将一些 NASM 程序集移植到 GAS,具体来说,我在原始文件中使用 CEXTERN 声明的存储上挂断了。
原NASM:
SECTION .text
cextern pw_8000
...
...
movq m7, [pw_8000]
当我 assemble 文件并尝试 link 它时,我看到以下内容:
ld: common/x86/dct-a.o: 重定位 R_X86_64_32S 对 `x264_pw_8000' 不能在创建共享对象时使用;使用 -fPIC
重新编译
使用 YASM,调用 DEFAULT REL 似乎可以解决这个问题。我不知道如何使用 GAS 执行此操作。
有什么想法吗?
编辑:
好像根据this post,移动命令可以写成
movq m7, [rip+pw_8000]
有谁知道这是否正确
是的。事实证明这是正确的:
movq m7, [rip+pw_8000]
是否有等同于 NASM 的 'DEFAULT REL' 指令的 GAS?
我正在尝试将一些 NASM 程序集移植到 GAS,具体来说,我在原始文件中使用 CEXTERN 声明的存储上挂断了。
原NASM:
SECTION .text
cextern pw_8000
...
...
movq m7, [pw_8000]
当我 assemble 文件并尝试 link 它时,我看到以下内容:
ld: common/x86/dct-a.o: 重定位 R_X86_64_32S 对 `x264_pw_8000' 不能在创建共享对象时使用;使用 -fPIC
重新编译使用 YASM,调用 DEFAULT REL 似乎可以解决这个问题。我不知道如何使用 GAS 执行此操作。
有什么想法吗?
编辑: 好像根据this post,移动命令可以写成
movq m7, [rip+pw_8000]
有谁知道这是否正确
是的。事实证明这是正确的:
movq m7, [rip+pw_8000]