maerlin666 a écrit :
[quote]et ce que je ne comprend pas c'est comment il fait la difference entre un int* et un char* pour ensuite decider de faire stwd ou stb
|
Le compilateur (par opposition à la norme C) sait qu'un char va être un BYTE, et qu'un int va être un WORD (16 bits dans ton environnement visiblement).
Donc, il va très intelligemment remplacer:
Code :
- char * pC = ....;
- int * pI = ....;
- *pI = 12;
- *pC = 34;
|
par:
LES DI, pC
MOV AL,12
MOV ES:[DI], AL
;et
LES DI, pI
MOV AX,34
MOV ES:[DI], AX |
Comme je l'ai dit, son système de typage interne sait automatiquement convertir les types C en taille mémoire adéquate, puisque pour chaque variable, il stocke son nom, sa valeur en cours (s'il y en a une), et sa taille.
Note que de nos jours, on va un peu plus loin que le 16 bits. Sur une machine 64 bits, on a souvent :
char = 8 bits
short = 16 bits
int = 32 bits
long = 64 bits
pointeurs = 64 bits
Message édité par Lam's le 11-12-2004 à 09:10:43