[rbp-0x8]
и [rbp-0x10]
- две разные локальные переменные. Ваш код полностью отличается от дизассемблированного кода.
со следующим кодом c,
{
int64_t a; // [rbp-0x8] is a
int64_t *p; // [rbp-0x10] is p; not *p
...
}
Программа должна получить *(p+1)
(размер 1 int64 равен 8 байтам) в RAX
.
MOV RAX, [rbp-0x10] ; RAX <-- p
ADD RAX, 8 ; RAX <-- p + 1
MOV RAX, [RAX] ; RAX <-- *(p + 1)
Ваш код должен получить совершенно другую переменную a
.
MOV RAX, [rbp-0x8] ; RAX <-- a