我是汇编编程新手,我遇到了一个问题,我收到了这个错误:
编程接收信号SIGSEGV,分段故障。 LoopNextChar() 在XXX.s:136 136 movq%rax,(%r11)
以下是代码:
getText:
xorq %r11, %r11
xorq %rax, %rax
xorq %r10, %r10
xorq %r9, %r9
movq %rsi, %r10
movq %rdi, %r11
LoopNextChar:
cmpq $0, %r10
je returnTxt
cmpq $63, buffInPtr
je inImage
sub $8, %rsp
call getChar
add $8, %rsp
cmpq $0, %rax
je returnTxt
movq %rax, (%r11)
incq %r11
incq %r9
incq %r10
jmp LoopNextChar
returnTxt:
movq %r9, %rax
ret
//
getChar:
movq $buffInPtr,%r10
movq $buffIn,%r9
xorq %rax,%rax
cmpq $63,(%r10)
je inImage
addq (%r10),%r9
movzbq (%r9),%rax
addq $1,%r10
ret
答案 0 :(得分:0)
问题是buffInPtr,它从未增加......为了解决这个问题我倾向于使用buffInPtr而不是addq $ 1,%r10