Dans un programme asm , qu'est-ce que veut dire .MODEL et quels sont les différents paramètres allant avec y compris leur signification.
Et aussi , que se passe-t-il si on oublie d'écrire cette instruction?
Dans un programme asm , qu'est-ce que veut dire .MODEL et quels sont les différents paramètres allant avec y compris leur signification.
Et aussi , que se passe-t-il si on oublie d'écrire cette instruction?
Bonjour,
la directive .model (MASM) permet d'intialiser le modèle mémoire utilisé par le programme ainsi que de préciser la convention d'appel (par défaut) des fonctions.
Le lien vers la directive sur la MSDN (MASM) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 .MODEL memorymodel [[, langtype]] [[, stackoption]]
http://msdn2.microsoft.com/en-us/lib...d6(VS.80).aspx
Voilà les différents paramètres de modèle mémoire (tiré d'une ancienne doc de MASM) qui permet de choisir le modèle adéquat (voir table 2.1):
http://webster.cs.ucr.edu/Page_TechD...de/Chap_02.htm
Sous windows on est donc limité à la mémoire plate (.model flat) tandis que pour DOS on peut théoriquement utiliser tous les autres.
Un lien qui donne une vue d'ensemble des différents modèles :
http://web.sau.edu/LillisKevinM/csci...ry_models.html
Pour les conventions d'appel (paramètre "langtype" de .model):
http://webster.cs.ucr.edu/Page_TechD...de/Chap_12.htm
(voir paragraphe "Naming and Calling Conventions")
Pour l'option "stackoption", voir le même lien que ci-dessus mais à "Setting the Stack Distance" où les deux options (FARSTACK et NEARSTACK) sont explicitées.
Si la directive .model n'est pas présente, l'assembleur donnera simplement une erreur syntaxique (étant donné qu'il ne sait pas de quel type sera le modèle mémoire, il ne peut rien compiler).
La directive doit être utilisée après celles des instructions (comme .386, etc.) mais l'ordre des directives suivantes n'est pas obligatoire. À titre d'exemple voilà ce que j'utilise, sous MASM en programmation Windows :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 .686p ; toutes les instructions sont diponibles .xmm ; utilisation des instructions SSE .mmx ; utilisations des instructions MMX .k3d ; utilisation des instructions 3Dnow! .MODEL flat,stdcall ; modèle plat, convention d'appel standard option casemap:none ; assembleur non sensible à la casse
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