( igoor | 2013. 02. 12., k – 09:12 )

Legyen szabad megjegyeznem, hogy ez egy rettenetesen kreten modon feltett kerdes. Mi a fenenek kell megkerdezni, hogy valaki ert-e hozza, majd egy fel nappal kesobb leirni a tenyleges problemat? Ird le a kerdest elsore _ertelmesen_ (mondjuk meg a kodot sem sikerult helyesen idebiggyeszteni) es vagy kapsz ra egy hasznalhato valaszt, vagy nem. Na mindegy, vissza a problemadhoz. A gcc azert mekeg, mert 64 bites architekturan (bar meg ez sem derult ki a kerdesbol) a pop es push 64 bites utasitas, viszont te egy 32 bites regisztert hasznalsz. Az EAX ugyanis a RAX regiszter also 32 bitjenek felel meg. A kerdes most az, hogy 32 bites vagy 64 bites kodot akarsz generalni? Ha 64 bit a cel, akkor hasznald a RAX regisztert a fenti kodban, ha viszont 32 bites kodot szeretnel, akkor ezt kozold a gcc-vel: gcc -m32 asm.c Az utobbihoz persze szukseged lesz a 32 bites libekre (gcc-multilib csomag, disztrotol fuggoen).