【问题标题】:how to export a function in GAS assembler?如何在 GAS 汇编器中导出函数?
【发布时间】:2013-07-17 18:05:13
【问题描述】:

您好,我有以下汇编代码,

.export __ls__11NSDOM_EncapFf
.text 
__ls__11NSDOM_EncapFf:
/* first load the symbolic constant*/
movq _IEEE_FP@GOTPCREL(%rip), %r8  /*%r8 is a scratch register*/
movq (%r8), %r9  /* %r9 and %r11 are scratch registers*/
movl (%r9), %r11d
/* second, see if it is zero and branch accordingly */
test %r11d, %r11d   /* zero call TNS procedure */
                    /* non-zero call IEEE procedure */
je  ____ls__11NSDOM_EncapFf_tns/* constant equals 0 */
jmp  ____ls__11NSDOM_EncapFf_ieee/* constant not equal to 0 */
ret

我将 .s 文件编译为 .o 文件(编译很好),但是当我将此 .o 与其他 .o 文件链接时,由于未解决对 _ls_11NSDOM_EncapFf 的引用而失败。我在 HP Non stop 系统、X86-64 位架构上使用 GNU 汇编器 2.19.1。请帮我解决问题。

【问题讨论】:

    标签: assembly x86-64 gnu-assembler


    【解决方案1】:

    您需要将您的符号设置为全局,使其可外部链接;

    .text 
    .global __ls__11NSDOM_EncapFf          /* Sets the symbol externally linkable */
    __ls__11NSDOM_EncapFf:
    /* first load the symbolic constant*/
    ...
    

    【讨论】:

      【解决方案2】:

      使用.global symbol.globl symbol(参见Using as - Assembler directives)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-13
        • 2021-04-16
        • 2011-07-11
        • 2021-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多