Bonjour à tou(te)s,
je programme depuis quelque temps avec FASM,et je voudrais savoir s'il y a une différence entre les CALL [...] RET de FASM et les PROC [...] ENDPROC deTASM.
Merci !
Bonjour à tou(te)s,
je programme depuis quelque temps avec FASM,et je voudrais savoir s'il y a une différence entre les CALL [...] RET de FASM et les PROC [...] ENDPROC deTASM.
Merci !
Bonjour,
CALL et RET sont des instructions des processeurs x86, tandis que PROC en ENDPROC sont des constructions haut niveau (ou "directives" pour employer un autre terme) propre à un assembleur, ici TASM.
CALL permet d'appeler une procédure ou un label tandis que RET permet de sortir d'une procédure.
PROC et ENDPROC permettent respectivement de construire le prologue (pour simplifier : ENTER ou PUSH EBP ; MOV EBP, ESP ) et l'épilogue de fonction (POP s'il y a lieu et RET ou RETN).
CALL et RET n'ont donc pas les mêmes fonctions que PROC / ENDPROC (ceci dit, dans certains cas, ENPROC peut générer un simple RET).
À la base il suffit de déclarer un label pour utiliser une fonction :
MASM/TASM fournissent des directives en plus :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 f: ret ; Plus loin call f
Avec TASM je ne sais pas mais MASM n'ajoute aucun code dans ce cas-là, c'est juste pour plus de clarté. Après il y a des utilisations plus avancées où l'assembleur gère tout seul les paramètres et les sauvegardes de registres.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 f proc ret f endp
FASM a aussi des macros dans ce style-là, c'est expliqué ici au 1.3 : http://flatassembler.net/docs.php?article=win32
:wq
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager