Po co var_A wskazuje na ostatnie 2 bajty int2 ?

I_v0

Użytkownik
Dołączył
Czerwiec 26, 2002
Posty
122
No wiec takie cos:

-+= CUT =+- Assembler
buffer = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_A = dword ptr -0Ah
int2 = dword ptr -8
int1 = dword ptr -4
-+= CUT =+- /Assembler

To jest mniej wiecej lokalizacja zmiennych w pamieci (przedstawilem czesc
deasemblacji), tyle ze teraz mniej wiecej tak sa zadeklarowane w C:

-+= CUT =+- C
char buffer[15]="Hello World";
int int1=1, int2=2;
-+= CUT =+- /C

Doszedlem do tego ze kompilator wyrownal rozmiar tablicy buffer do 4 (przez co
zamiast 15 zaalokowano 16 bajtow - spowodowane jest to tym ze procesor jest
32bitowy i wiekszasc instrukcji przewiduje takie wlasnie wywolania). Natomiast
nie moge dojsc do jednej rzeczy a mianowicie:
Na co wskazuje "var_A" ? Wedlug logiki i moich wiadomosci w tym miejscu w
pamieci nie znajduje sie nic, lub cos co jest niewazne, jednak po co w takim
razie sa alokowane 2 bajty ?? I wlasnie tu tez mam problem, skoro kompilator
wyrownuje wszystko do 4 bajtow to dlaczego dane wskazywane przez var_A maja
tylko 2 bajty?
Dobra nie ma co mnozyc pytan, jakby ktos wiedzial to niech dropnie jakas
odpowiedz :> Wyglada mi to jakby var_A wskazywalo na ostatnie 2 bajty int2 - po
co? :>

I_v0 - BlackSun Invaders crew

PS: Z tego forum nieliczni mogliby cos wniesc do sprawy ale postanowilem zaryzykowac :)
 
Do góry Bottom