29/10/12 11:17
web_pirate
Scusate tanto in anticipo se ho sbagliato sezione.
La mia domanda era questa:
Avendo un semplicissimo programma del tipo:
so già in partenza che a, essendo una variabile locale, verrà salvata nello Stack. Ora, dando in pasto il programma al caro GDB, mettendo un break prima del termine del programma e facendo "disas", mi vengono fuori tutte le istruzioni in linguaggio assembly del main():
La variabile a è lì a <main+6>. Ora, lo stack so che inizia la dove punta il registro ESP, quindi in una di quelle locazioni di memoria che vanno dal valore puntato da ESP, fino alla fine dello stack, dovrei trovare la mia variabile, e infatti, se do a GDB x/4x $esp, ecco che mi scrive:
La mia domanda è: perché il valore 6 non si trova alla prima locazione puntata da ESP ma alla quarta? Cosa sono quei 3 valori che ci sono prima e che sono sempre gli stessi ad ogni esecuzione? Grazie mille in anticipo...
La mia domanda era questa:
Avendo un semplicissimo programma del tipo:
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ int a=6; return 0; }
so già in partenza che a, essendo una variabile locale, verrà salvata nello Stack. Ora, dando in pasto il programma al caro GDB, mettendo un break prima del termine del programma e facendo "disas", mi vengono fuori tutte le istruzioni in linguaggio assembly del main():
Dump of assembler code for function main: 0x080483dc <+0>: push ebp 0x080483dd <+1>: mov ebp,esp 0x080483df <+3>: sub esp,0x10 0x080483e2 <+6>: mov DWORD PTR [ebp-0x4],0x6 0x080483e9 <+13>: mov eax,0x0 => 0x080483ee <+18>: leave 0x080483ef <+19>: ret
La variabile a è lì a <main+6>. Ora, lo stack so che inizia la dove punta il registro ESP, quindi in una di quelle locazioni di memoria che vanno dal valore puntato da ESP, fino alla fine dello stack, dovrei trovare la mia variabile, e infatti, se do a GDB x/4x $esp, ecco che mi scrive:
(gdb) x/4x $esp 0xbffff2a8: 0x080483f9 0xb7fc5000 0x080483f0 0x00000006
La mia domanda è: perché il valore 6 non si trova alla prima locazione puntata da ESP ma alla quarta? Cosa sono quei 3 valori che ci sono prima e che sono sempre gli stessi ad ogni esecuzione? Grazie mille in anticipo...
aaa