【问题标题】:What's the GAS equivalent to NASM' DEFAULT REL directive?与 NASM 的 DEFAULT REL 指令等效的 GAS 是什么?
【发布时间】: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 已被定义为寄存器的别名,这是正确的。

标签: assembly x86-64


【解决方案1】:

是的。事实证明这是正确的:

movq m7, [rip+pw_8000]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-07
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    相关资源
    最近更新 更多