Declaration

cs_noel70 Messages postés 40 Date d'inscription samedi 22 mai 2004 Statut Membre Dernière intervention 25 janvier 2007 - 10 sept. 2004 à 21:25
ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 - 13 sept. 2004 à 18:57
Bonjour a tous.
Voila, lorsqu'on veut déclarer une variable de type réelle, on utilise cette syntaxe.

.data

Nom_de_la_varaible dq 0.0

J'aimerais savoir comment on peut faire pour déclarer une variable de type réelle mais en LOCAL.

Merci.

11 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
10 sept. 2004 à 22:07
sub esp, 8

ciao...
BruNews, Admin CS, MVP VC++
0
cs_noel70 Messages postés 40 Date d'inscription samedi 22 mai 2004 Statut Membre Dernière intervention 25 janvier 2007
10 sept. 2004 à 22:15
Merci, mais je n'ai pas compris, je débute en asm.
Ce que je voudrais faire, c'est déclarer une variable reelle dans une procédure, une déclaration de ce type:

LOCAL Nom_Variable : DWORD

Ici, DWORD, car c'etait une varaible de type DWORD, mais que dois-je mettre si je veux que cette variable soit de type REELLE, j'avais pensez à REAL, mais sa me met undefini symbol : REAL, lorsque je compile.

J'ai regarder dans les lib de masm32, mais je n'ai rien trouver.

Encore merci.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
10 sept. 2004 à 22:19
desole mais je ne fais pas de simili code.
sub esp, 8
reserve 8 octets, donc une place pour une variable REAL.

ciao...
BruNews, Admin CS, MVP VC++
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
11 sept. 2004 à 00:48
Et ça, t'as essayé :

LOCAL Nom_Variable : QWORD
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
11 sept. 2004 à 09:11
Salut,

LOCAL nom:REAL4 ;4 bytes
LOCAL nom:REAL8 ;8 bytes
LOCAL nom:REAL10 ;10 bytes
se reporter a l'aide de masm32 "DATA types"

ToutEnMasm
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
12 sept. 2004 à 00:31
Je vois ici plusieurs maniere de déclarer un espace mémoire de 8 octets.
Y'a t'il une méthode standard, ou le sont elles toutes ?
Dans mon cas je fais comme ymca2003 l'a indiqué ( LOCAL MaVariable:QWORD)

Shell
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
12 sept. 2004 à 00:40
Pour une fois que je ne suis pas d'accord avec ymca2003 j'en profite...
C'est seulement du sabir MASM donc non portable sur un autre assembleur. Mais ce n'est pas encore le plus grave, en ASM y a pas de compilo pour optimiser alors quand on veut faire ASM faut aussi faire la partie compilo, impossible en sabir car aucun controle de la pile ni de rien du tout. Vaut mieux un bon C que du mauvais ASM et de tres loin.

ciao...
BruNews, Admin CS, MVP VC++
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
12 sept. 2004 à 10:53
Donc le mieux est d'en rester a l'allocation de base comme tu l'as montré (sub esp, 8).
Je ne maitrise pas encore tous les noms de registres et je ne connais pas tous leur utilité. Seul eax, ecx et edx me conviennent, encore que.

Shell
0
ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
13 sept. 2004 à 08:21
Salut,
Utiliser sub esp,8 pour pour créer une variable locale est une erreur.
Deux instructions microprocesseurs permettent de dimensionner les variables locales.
Il s'agit de enter et de leave.
La maniere d'utiliser ces deux instructions définit le format des appels qui diffèrent suivant les assembleurs et les langages utilisés.
Voir l'article de msdn consacré au Stack Frame format.
Avec masm32 l'utilisation de proc définit ce format et permet a l'utilisateur d'être libéré de tous les calculs et de la mise en place de enter et leave,masm32 fait tout le travail.
Si vraiment on veut se créer des problèmes de compatibilité,de bugs en pile,utiliser sub esp,8
ToutEnMasm
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 sept. 2004 à 10:26
Quand on ne veut rien calculer on a rien a faire en ASM on va en VB, ne te parait pas ?
Tous les compilateurs C modernes ont mis une option 'No Stack Frame', c'est vrai qu'eux veulent produire un code rapide...

ciao...
BruNews, Admin CS, MVP VC++
0
ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
13 sept. 2004 à 18:57
Salut,
Je suis curieux de voir un proc C ave l'option 'No Stack Frame' décompiler pour voir comment l'option code le retour .Ca doit ressembler a un format stack frame de c (bêtement).
Visual C++.net 7.0 de microsoft ne doit pas être trop moderne si on en croit tes dires.
ToutEnMasm
0
Rejoignez-nous