如何在GAS汇编程序中导出函数?

时间:2013-07-17 09:53:56

标签: assembly x86-64 gas

您好我有以下汇编代码,

.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。请帮我解决这个问题。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

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