当编译所有我的.S时,我在任何地方都有这个错误: “二进制格式不支持任何特殊符号类型”
在此代码中
[BITS 64]
global strcspn:function
section .text
strcspn:
push rbp
mov rbp, rsp
mov r8, 0
.while:
cmp byte[rdi + r8], 0
je .goodEnd
mov r9, 0
jmp .check
.incr:
inc r8
jmp .while
.check:
cmp byte[rsi + r9], 0
je .incr
cmp byte[rdi + r8], byte[rsi + r9]
je .goodEnd
inc r9
jmp .check
.goodEnd:
mov rax, [r8 - 1]
leave
ret
答案 0 :(得分:2)
看起来像是nasm代码(请在下次添加标记),您可能忘记指定输出格式-f elf64
,因此它默认为二进制,它不支持:function
符号类型(你无论如何都不需要)。请注意,您至少也需要修复cmp byte[rdi + r8], byte[rsi + r9]
,因为cmp
不接受两个内存引用。此外mov rax, [r8 - 1]
看起来非常可疑。