分段错误,但为什么呢? Ubuntu英特尔

时间:2015-11-15 14:52:13

标签: assembly segmentation-fault x86-64

我是汇编编程新手,我遇到了一个问题,我收到了这个错误:

  

编程接收信号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

1 个答案:

答案 0 :(得分:0)

问题是buffInPtr,它从未增加......为了解决这个问题我倾向于使用buffInPtr而不是addq $ 1,%r10