bonjour,
je me base sur 2 façons d'afficher hello world
1) en utilisant la fonction systeme n°4: write, j'ai le main suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 _start: mov eax, 4 mov ebx, 1 mov ecx, txt mov edx, len int 0x80 mov eax, 1 mov ebx, 0 int 0x80
2) en utilisant la fonction C printf, j'ai le main suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 _start: PUSH dword car ; printf prend un pointeur CALL printf ADD ESP, len ;; exit MOV EAX, 1 MOV EBX, 0 INT 0x80
Ce qui m'a étonné est que dans un cas on utilise les registres et dans l'autre la pile.
J'ai donc cherché sur le net et ai trouvé que ça revenait au même
L'intérêt de la pile étant qu'elle ne limite pas le nombre d'arguments.
J'ai donc voulu vérifier ça et faire la version 1 (write) en utilisant la pile
en faisant du genre: (ordre inversé pour la pile)
Qui ne m'affiche rien (ni au shell ni sous le debugger ald), pourriez vous m'expliquer plz?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 _start: push len push txt push 1 push 4 int 0x80 mov eax, 1 mox ebx, 0 int 0x80
Merci!
Partager