watzakamikaze: Vi, variable locale dans la pile. On s´en sert aussi pour passer des paramètres à une fonction entre autre. Chaque fonction alloue sa pile ( son stack frame).
Exemple:
En C
int f(int x,int y) {
int p;
p=x+y;
return x+y;
}
En Intel 32bits
f:
pushl %ebp # sauvegarde du debut de la pile de l´appellant
movl %esp, %ebp # on se sert du haut de la pile de l´appelant comme base de notre sous pile
subl $4, %esp # on alloue 4 octets dans la sous pile pour l´integer ´p´
andl $-16, %esp
movl 8(%ebp),%eax # l´argument x dans %eax
movl 12(%ebp),%ecx # y dans %ecx
addl %eax,%ecx # ecx = eax+ecx ( x+y)
movl %ecx,-4(%ebp) # p = ecx ( =x+y)
movl -4(%ebp),%eax # return p -> p dans eax
leave
ret
Et pour appeller la fonction:
pushl $9 # on empile le second et dernier argument
pushl $10 # on empile le premier argument
call f # on appelle f
addl $8,%esp # on libère les 8 octets alloués sur la pile pour l´appel de la fonction
- le résultat dans %eax
En fait t´as sûrement vu un hello world en assembleur, et tu te demande encore comment ça marche, c´est pour ça que je te conseille de continuer à lire de la doc, et surtout à compiler du petit code C qu´ensuite tu desassembles pour voir comment_ça_marche. Les bon compilos de nos jours produisent du bon code asm, meilleur même que si on l´avait fait nous même, donc pas de prob.
yoda: Bien ça, t´as eut une embauche ?
Moi j´ai bossé 6 mois pour une petite boite d´investissement financier, je fesais du code sur serveur unix ( des linux fedora...) en PHP et PERL, du C aussi. Mais dans la majorité c´était souvent des appli web de gestion sans prétention, en plus de ça mon patron me saoulait, je me suis donc barré ; )
J´étais bien payé, mais je regrette pas... pendant 90% du temp ou j´ai bossé là je fesais des truc relou. J´ai pas envie de finir developpeur d´appli de gestion tu vois.
´fin bref, là je cherche même pas de boulot. Petit biz sur le web + quelques invest par ci par là, je m´en sort.
J´ai du temp à consacrer à mon projet donc, un emulateur NES ´from scratch´ pour UNIX ( depuis le temp que j´en revais), mais j´en suis qu´au desassembleur 6502 je viens de commencer : )
Euh, return 0x1...