|
|
|
|
Salut a la Communauté!!!
Voici le source d'un code en C tout simple...! Il ne fait kapeler une fonction parametre dan le but d'illustrer le mecanisme de passage des argument. C tout!!
#include <stdio.h>
void ma_fonction(int, int, int);
void main(void)
{
int x;
ma_fonction(1,2,3);
x=1;
printf("\nx = %d\n", x);
}
void ma_fonction(int a, int b, int c)
{
char buffer[5];
char buffer2[10];
int n;
}
... push 3 ; empilement des... push 2 ; parametres passes... push 1 ; a la fonction call <adresse de ma_fonction> ; appel de ma_fonction ... push bp ; a l'entree de ladite fonction... mov bp,sp ...
(...) MOV DX, <valeur_ki_varie_selon_le_prog> MOV CS:[valeur_toujours_fixe], DX ; 7valeur ne change pas... MOV AH,30 ; recupere la version du DOS INT 21 (...) ; suivi de plusieurs instructions repetees du genre... (...) MOV AX,35xx INT 21 (...)
Si ton package borland est complet (j'ai un Borland c++3.1)
#TEST#9: ma_fonction(1,2,3);
cs:02C8►B80300 mov ax,0003
cs:02CB 50 push ax
cs:02CC B80200 mov ax,0002
cs:02CF 50 push ax
cs:02D0 B80100 mov ax,0001
cs:02D3 50 push ax
cs:02D4 E81800 call _ma_fonction
cs:02D7 83C406 add sp,0006
#TEST#11: x=1;
cs:02DA C746FE0100 mov word ptr [bp-
#TEST#12: printf("\nx = %d\n", x);
cs:02DF FF76FE push word ptr [bp-
En forçant le processeur 386 j'obtiens #TEST#9: ma_fonction(1,2,3); cs:02C6►6A03 push 0003 cs:02C8 6A02 push 0002 cs:02CA 6A01 push 0001 cs:02CC E81600 call _ma_fonction cs:02CF 83C406 add sp,0006 #TEST#11: x=1; Gates gave you the windows. GNU gave us the whole house.(Alexandrin) |
De toute manière , ne t'attends pas à trover immédiatement la fidèle traduction en assemebleur de ton code C.
|
Mais Saperlipopette!! Avec l'EDI de Borland Turbo C/C++ 3.0 g recup sur le net une autre version de Turbo Deugger et la... Magie de l'informatique...(?) me donne EXAC-TE-MENT le code asm que tu ma envoyé...!!!
|