unexpect rax value Description of problem: - When I execute "mov -0x8(%rbp), %rax" and "movq 0xb8000, (%rax)", the value of rax should be 0x7fedf but it is 0x7fefe. It is 1 less. Steps to reproduce: - 1. Code currently executed
(gdb) x/2i $pc => 0x2202- 2. Value of memory address -0x8(%rbp): mov -0x8(%rbp),%rax 0x2206 : movq $0xb8000,(%rax)
(gdb) x /xg $rbp-0x8 0x7fec8: 0x000000000007fedf- 3. Value of rax before execution
(gdb) p /x $rax $1 = 0xfffffffd- 4. Value of rax after execution
(gdb) p /x $rax $1 = 0x7fedfIt's all right so far. - 5. View the current execution code again
(gdb) x/i $pc => 0x2207the code address changed from 0x2206 to 0x2207 and the code changed from "movq xx, xx" to "movl xx, xx".: movl $0xb8000,(%rax)