[Assembleur inline C++] Récupérer l'offset d'un label

ShivX Messages postés 2 Date d'inscription mercredi 9 septembre 2009 Statut Membre Dernière intervention 10 septembre 2009 - 10 sept. 2009 à 00:13
ShivX Messages postés 2 Date d'inscription mercredi 9 septembre 2009 Statut Membre Dernière intervention 10 septembre 2009 - 10 sept. 2009 à 14:27
Bonjour a tous,

J'ai un léger problème avec l'assembleur inline dans un programme en C++, n'étant pas un expert en asm j'espère que vous pourrez m'éclairer un peu.

J'essaye désespérément de récupérer l'offset d'un label... sans résultalt... la compilation bloque

Voici la portion de code qui pose problème :

void fnct() {
_asm {
  ...
    Label:
          ...
        mov eax, OFFSET Label 
  ...  
}
}
 


et le résultat :

E029: col(1) symbol 'Label' has not been declared

Je compile avec open watcom... je sais pas si la syntaxe est bonne ou même permise sous ce compilateur...

J'ai déjà pu voir ce genre de code dans des sources qui n'avaient pas l'air de poser problème... donc est ce que l'opérateur OFFSET peut d'une manière ou d'une autre récupérer l'offset d'un label? ou sinon... comment pouvoir récupérer cet offset?

Merci d'avance pour vos réponses

3 réponses

ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
10 sept. 2009 à 10:11
L'assembleur inline n'admet pas nécessairement la directive offset.
Vérifier cela avec la documentation du c++.
La meilleure méthode pour mélanger du c++ et de l'assembleur est d'insérer un fichier objet dans le c++ après l'avoir déclarer.
On s'évite ainsi ce genre de désagrément.
0
Guilou34 Messages postés 142 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 29 janvier 2016 1
10 sept. 2009 à 10:42
Pourquoi pas tout simplement :

...
_asm
call label
label: pop eax
...

Amicalement.
0
ShivX Messages postés 2 Date d'inscription mercredi 9 septembre 2009 Statut Membre Dernière intervention 10 septembre 2009
10 sept. 2009 à 14:27
Merci à vous deux pour vos réponses.

Effectivement il semblerait que les labels ne soient pas vraiment implémenté sous open watcom...
http://bugzilla.openwatcom.org/show_bug.cgi?id=704

J'ai donc pris la décision de changer de compilateur tout simplement.
0
Rejoignez-nous