我被 NASM 代码困住了,我试图在 NASM 中重现 strchr 函数,但我无法弄清楚两件事:-为什么当我尝试打印结果时,我收到一个 printf % 格式错误的警告s 即使我试图返回一个字符串上的指针,-以及为什么我不断收到 SIGSEV 信号,但一个问题与我认为的另一个问题有关。
这是我的代码,如果有人可以提供帮助,将不胜感激:
[BITS 64]
global strchr_asm
strchr_asm:
push rbp
mov rbp, rsp
mov r9, -1
mov rax, rsi
mov r8b, BYTE[rdi]
loop:
inc r9
cmp BYTE[rax+r9], 0
je endF
cmp BYTE[rax+r9], r8b
je endV
jmp loop
endF:
add rax, r9
jmp last
endV:
add rax, r9
last:
mov rsp, rbp
pop rbp
ret