|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : erreur de compilation [ Divers / Aide et documentation ] (ggmomo)
Informations & options pour cette discussion
lundi 8 janvier 2007 à 13:54:04 |
erreur de compilation

ggmomo
|
Bonjour Voila je débute en asm et j'ai donc esayer de realiser une horloge en m'inspirant d'une deja existante  mais lors de la compilation j'ai des erreurs que je ne comprend pas  os : winXP home sp2l'erreur : hor.asm(134) : error A2004: symbol type conflict la ligne 134 : mov ax,@code la ligne 135 : mov ds,ax .code IntVectOFF dw 0 IntVectSEG dw 0 intvectdd dd 0 Ticks db 0 Seconds db 0 Minutes db 0 Hours db 0 printed db 0 Merci d'avance
|
|
|
lundi 8 janvier 2007 à 14:25:10 |
Re : erreur de compilation

_dune2_
|
Réponse acceptée !
salut,
Ton problème vient du fait que tu veuilles stocker une adresse (@code)
qui est une donnée 32bits dans un registre (ax) qui fait 16bits .. ça
ne rentre pas et c'est logique. Je pense que l'exemple que tu as
récupéré (et dont tu t'es inspiré) est du code 16bits pour processeurs
8086 (avec des adresses en 16bits, ce qui n'est pas le cas des PC) ...
Pour windows XP, il faut te tourner vers du code 32bits.
Chris.
Gentoo... que du bonheur ...
|
|
|
lundi 8 janvier 2007 à 14:46:47 |
Re : erreur de compilation

ggmomo
|
merci de ton aide
je voudrais savoir est-ce qu'en 32bits on peut comme utilisé des registre 16bit et 32 bit a la foi?ou dois-je utilisé que des 32 bits?
|
|
|
lundi 8 janvier 2007 à 15:04:38 |
Re : erreur de compilation

ggmomo
|
edit : est-il possible de mettre le .code en 16bit sinon car je ne connais pas la syntaxe 32bits. la je suis vraiment perdu :)
|
|
|
lundi 8 janvier 2007 à 15:19:22 |
Re : erreur de compilation

_dune2_
|
salut,
Il n'y a aucun soucis pour utiliser des variables 16 bits dans du code 32bits assembleur.
C'est d'ailleur ce que tu fais en utilisant le registre ax :)
à titre d'information :
AH, AL 8bits (AH poids fort AL poids faible)
AX 16bits
EAX 32bits
RAX 64bits (uniquement en mode 64bits appelé em64t chez intel et amd64 chez amd)
tu as donc à dispo (je ne parlerais pas du mode 64bits qui nécéssitent un OS 64bits)
8 "general purpose registers" 32bits :
EAX, EBX, ECX, EDX, ESI, EDI, EBP et ESP (attention toutefois car EBP
et ESP sont utilisé pour la sauvegarde et l'utilisation de l'adresse de
la pile)
8 registres 16bits :
AX, BX, CX, DX, SI, DI,BP et SP (on remarquera que la version 32bits
est une "E"xtension de ces registres 16bits ... et donc toute modif par
exemple de AX, modifie la partie basse 16bits de EAX)
8 registres 8bits :
AH, AL, BH, BL, CH, CL, DH et DL (là encore, ce sont des sous ensembles de AX,BX,CX et DX)
Tu as ensuite des registres appelés SIMD (Single Instruction Multiple Data) 64bits :
MM0 -> MM7 qui sont 8 registres 64bits qui peuvent être segmentés en
8bits, 16bits, 32bits ou 64bits lors des opérations dessus. Attention
aussi sur le fait que ces registre sont "mappé" sur le pile du
coprocesseur arithmétique ... ce qui implique de les nettoyer à la fin
de leur utilisation avec l'instruction "emms" pour avoir un
environnement FPU sain.
Et si ton CPU prend en charge les extensions SSE, tu as aussi 8 registres 128bits supplémentaires:
XMM0 -> XMM7 qui peuvent être segmentés comme les registres MMX mais
avec le double de capacité et indépendant du coprocesseur arithmétique
cette fois-ci (donc pas de restauration du FPU à faire).
Donc pour conclure, oui, tu peux mixer l'utilisation de registres
8/16/32bits dans ton code (c'est même recommandé quand par exemple tu
manipules une chaine de caractère, tu le fais par octets (8bits) et pas
par 32bits ;) sauf pour recopier plus rapidement par paquets de 4
caractères)
Par contre, garde à l'esprit que dans un registre il faut mettre une
donnée cohérente (ex: une adresse -> EAX ou autre 32bits en mode
32bits , ainsi que une adresse -> RAX ou autre 64bits en mode 64bits)
Gentoo... que du bonheur ...
|
|
|
lundi 8 janvier 2007 à 15:30:39 |
Re : erreur de compilation

_dune2_
|
re,
pour ce qui est de "@code", c'est une adresse et elle est stocké sur
32bits .... il n'y a donc aucune possibilité de la stocker dans un
registre 16bits !!
Il te faudra passer par le registre "eax" et la transférer dans "esi"
ou "edi", car "ds" est un selecteur de segment (Data Segment, qui sert
à effectuer un adressage de type [SEGMENT]:[OFFSET]). Donc là où tu
avais "[ds:di]" et "[ds:si]", j'utiliserai "[edi]" et "[esi]"
directement.... Ceci dit, sans compréhension complète du code, ce ne
sera pas aussi simple à traduire, car "di" ou "si" est un offset, et
doit donc être ajouté à "edi" ou "esi" pour que ce soit correct.
Pour ce qui est de l'utilisation d'un tel type d'adressage je laisserai
la parole à d'autres developpeur asm de ce site qui en savent beaucoup
plus que moi sur ce point (je ne manipule pas les adresses en
SEGMENT:OFFSET, je reste pour ma part avec des registres 32bits portant
des adresses directes bien plus simple).
Gentoo... que du bonheur ...
|
|
|
lundi 8 janvier 2007 à 15:50:21 |
Re : erreur de compilation

Nasman
|
Bonjour ggmomo,
Qu'est ce que tu utilises comme assembleur et quel type de fichier demandes tu en sortie ?
Si tu veux créer un exécutable 16 bits (format passablement obsolète de nos jours) il te faut l'indiquer quelque part. - dans les déclarations de sections - lors de la compilation (format objet) - lors de l'édition des liens
Dans ton cas je pense que la déclaration de la section de code est incomplète.
A+
|
|
|
lundi 8 janvier 2007 à 15:58:47 |
Re : erreur de compilation

ggmomo
|
Ben j'essaye en 32 bits :) Il me met 2 erreurs 1°) test32.asm(134) : error A2004: symbol type conflict mov eax, @code mov esi,eax 2°)test32.asm(178) : error A2022: instruction operands must be the same size mov word ptr es:[IntNumber*4 + 0], offset ClockISR Code en .asmEn tout cas mercide ton aide, j'aurais appris plein de choses :)
|
|
|
lundi 8 janvier 2007 à 16:19:14 |
Re : erreur de compilation

BruNews
|
_dune2_ > que ESP soit pointeur de pile, c'est clair car "by design" mais de EBP on fait ce que l'on veut. Qu'il puisse avoir un rôle particulier si on fait une stackframe en début de procédure ou alors gestion d'exception etc... ok mais c'est seulement le choix du programmeur car EBP peut s'employer comme nimporte quel autre registre.
ciao... BruNews, MVP VC++
|
|
|
lundi 8 janvier 2007 à 16:27:46 |
Re : erreur de compilation

ggmomo
|
j'utilise masm comme compilateur et en sortie je lui demande un win32 app.
|
|
|
Cette discussion est classé dans : ligne, erreur, db, compilation, asm
Répondre à ce message
Sujets en rapport avec ce message
Retour à la ligne en asm [ par 404 ]
Je voulais juste savoir comment on programme un retour à la ligne en assembleur (tasm) ca doit surement etre tout simple mais c utile lol
erreur d'assemblage ?? [ par Hrusdik ]
j'ai MASM 6.15 pour assembler mes codes en asm mais aprés avoir tapé X:\XXXX\XXXX\make32 1 il me dit fichier introuvable !!!Pourtant make32.bat et 1.a
Drawline en asm [ par raoulli ]
bonsoir.J'ai voulu creer une ligne sur l'ecran en asm, mais Drawline ?, je ne la trouve pas, si elle existe.j'ai trouvé des infos, mais avec les inter
Petit problème pour comparer (cmp) [ par smok1360 ]
Bonjour à tous,Pour commencer, j'espère de ne pas avoir choisis le mauvais lieu pour poster, j'ai un petit peu hésité Donc, j'ai décidé d'apprendre l'
Utilisation d'assembleur dans Visual Studio C++ 2008 [ par epineurien ]
Bonjour à tous !Je suis passé il y a quelques jours de Masm32 à Visual Studio 2008 et j'ai (comme d'hab.) quelques problêmes.Tant qu'il s'agit d'affic
program asm [ par yazidhy ]
j'ai besoin d'un program sur asm d'un afficheur 7 segment connecté en parallèle(port DB25) à l'ordinateurmerci pour votre aide "C urgent"
Exe simple codé sans linker [ par Mareck666 ]
Bonjour tout le monde, voila mon pb afin de mieu comprendre le format EXE 16 bits (ok sa sert plus a rien de codé des application avec sa, mai bn c'es
Mini OS !! debut [ par Hardouz ]
salut a tous ! je debut en ASM je vx bosser un px en ASM je connais l'architechture ect !!! j'ai fais un pti programme mais il ya un probléme 1/ lors
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|