我的功能不是由NASM汇编程序导出的,因此我无法将其与我的C程序链接。我正在使用gzinflate(substr(base64_decode($base64),10));
指令,如手册所述,但它无法识别。怎么了?我是这样做的:
export
如果我省略[niko@dev1 test]$ cat ssefuncs.S
use64
section .data
NEW_LINE_4_SSE db '1111111111111111'
section .text
export find_nl_sse
find_nl_sse:
mov rax,NEW_LINE_4_SSE
movntdqa xmm0,[esi]
pcmpestri xmm0,[rax],0x0
ret
[niko@dev1 test]$ nasm -f elf64 -o ssefuncs.o ssefuncs.S
ssefuncs.S:7: error: parser: instruction expected
[niko@dev1 test]$
,重新编译程序集并尝试链接,则生成的代码不会与我的C程序链接:
export
我也尝试添加[niko@dev1 test]$ gcc -o bench3 ssefuncs.o bench3.o
bench3.o: In function `main':
/home/niko/quaztech/qstar/test/bench3.c:34: undefined reference to `find_nl_sse'
collect2: error: ld returned 1 exit status
[niko@dev1 test]$
指令但是我得到了同样的错误。为什么NASM文档如此误导?
答案 0 :(得分:4)
这是将标签定义为在当前装配单元外可见的正确方法。
HighlightBrushKey
global _main
_main:
语句必须位于实际标签C文件会将标签引用为
global