У меня есть следующий источник:
1 #include<stdio.h>
2
3 int main(void) {
4 int i= 1337; // breakpoint after this value is assigned
!5 return 0;
6 }
В asm от gdb
я получаю:
!0x00000000004004f1 main+4 movl $0x539,-0x4(%rbp)
И я подтвердил, что $0x539
= 1337
. Как посмотреть адрес памяти, где хранится значение 1337
? Значение адреса памяти rbp
показывает:
rbp 0x00007fffffffeb20
Я думал, что регистр rbp
будет показывать значение 0x539, поэтому где я смогу найти его в gdb (какую команду использовать? и т. д.)?
Я обнаружил одну интересную вещь:
>>> print i
$16 = 1337
>>> print &i
$17 = (int *) 0x7fffffffeb1c # how is this arrived at?