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;
}
Jtravaille sous windows 98 avec l'EDI de Borland Turbo C/C++ version 3.0 (en passant, il n'y en pas de plus evolué?). Bref...
Quand je desassemble le code executable de ce petit programme jariv pa a retrouver les instructions asm qui correspondent a celles ecrite en C dans le code source. Plus precisement jdevrais en principe (au moins) voir les instructons suivantes avant l'appel de la fonction, des instructions du genre:
... 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 ...
Mais que NENNI!!! Jne retrouve aucune de ces instructions tout au long du desassemblage du code...! J'utilise pour le deboguage <DEBUG> avec comme parametre le chemin d'acces de l'executable du code. Puis jtape <U> - la commande de desassemblage. Puis une liste d'instructions apparait. Puis jtape <U>, et <U> enkor, et enkor, et enkor... Et dans le long listing ki en resulte, RIEN! Pas de trace du code desassemble correspondant au fichier source C compile.
Poutant kan jtape la commande <G> - ki execute directement le code du fichier juska la fin, le code s'execute normalement et marque meme <PROGRAMME TERMINE NORMALEMENT> a la fin de l'execution...!
Alor, ma kestion est toute simple:
1/ koman visualiser le code desassemble de mon executable - passage des arguments a la fonction, entree/sortie de la fonction, etc. ? Est-ce un parametrage de DEBUG kil faille effectuer et que je nai pas fait ? Ou alor plu simplement DEBUG ne peut pas le faire ? Dans ce cas ou puis-je me procurer un debogueur en ligne de commande moins ARCHAIQUE que ce DEBUG ?
2/ Et tenez vous bien ! KELKE SOIT le program exe ke je lance avec DEBUG, les premieres lignes (et meme les suivantes !) affichent les memes instructions du genre:
(...) 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 (...)
Keske tous cela signifie, et pkoi mon code a moi n'apparait pas ?
1000 FOIS MERCI DAVANS A TOUTE LA COMMUNAUTE !!!!!!!


