-1

次のアセンブリプログラムがあります。

.globl main
main:
    push %rbp
    mov %rsp, %rbp
    movb $8, -1(%rbp)
    movw $30, -4(%rbp)
    mov -1(%rbp), %rax
    add -4(%rbp), %rax
    call func
    pop %rbp
    ret

func:
    push %rbp
    mov %rsp, %rbp
    movl $7, -4(%rbp)
    mov -4(%rbp), %rbx
    pop %rbp
    ret

プログラムをステップ実行するとき、以前は $0x0800001e` (8 バイト、0 バイト、0 バイト、30 バイト) だった の値にアクセスしようとした後、call func前に、すべてゼロが表示されるようになりました。push %rbprbp

>>> x/1xw $rbp-4
0x7fffffffe410: 0x00000000

なぜこれが起こるのですか?rbp関数呼び出し間で値をリセットしますが (アドレスは保持します) ?

4

1 に答える 1