vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 2010
-
12 août 2004 à 15:14
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 2010
-
12 août 2004 à 19:27
Pourquoi il faut mettre absolument dword ptr avant le nom d'une fonction pour appeler une API de Windows?
cs_patatalo
Messages postés1466Date d'inscriptionvendredi 2 janvier 2004StatutModérateurDernière intervention14 février 20142 12 août 2004 à 16:07
salut,
parceque tu va chercher l'adresse de la fonction dans une cellule memoire et que ton adresse memoire n'as pas de taille et donc, il faut la preciser. ( ca pourrait etre call word[FonctionAPI] )
sinon, tu cree une macro.
je sais pas ce que ca donne en TASM mais ca doit etre kif MASM:
callAPI MACRO fName
call dword ptr [fName]
ENDM
et donc, dans le prog, on aura plus de dword ptr:
push 0
callAPI ExitProcess
sache que tout acces memoire doit avoir une taille definie.
Pour certaines instructions, elle est explicite:
mov eax,[edx] eax est un dword donc [edx] aussi.
Pour d'autres, ce n'est pas défini:
mov [edx],0 <- ICI, faut préciser.
call [edx] <- idem.
Pour d'autres, c plus ambigue: ( nasm )
cmp dword [edx],byte -1
pour ce cas, byte -1 sera codé sur 8 bits mais la valeur sera testée sur 32 bits. ( equivalent movsx )