2013-07-17 5 views
2

안녕하세요, GAS 어셈블러에서 함수를 내보내는 방법은 무엇입니까?

.export __ls__11NSDOM_EncapFf 
.text 
__ls__11NSDOM_EncapFf: 
/* first load the symbolic constant*/ 
movq [email protected](%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 

나는 파일을 .O하는 .S 파일을 다음 어셈블리 코드를 컴파일 한 (컴파일 괜찮),하지만 난 다른 .o 인 파일이 .o 인을 연결하면이로 인해 실패 해결되지 않은 참조가 _ ls _11NSDOM_EncapFf입니다. HP Non Stop System, X86-64 비트 아키텍처에서 GNU 어셈블러 2.19.1을 사용하고 있습니다. 문제 해결을 도와주세요.

답변

3

외부 연결 가능하도록 심볼을 전역으로 설정해야합니다.

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