IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

x86 32-bits / 64-bits Assembleur Discussion :

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


Sujet :

x86 32-bits / 64-bits Assembleur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 7
    Par défaut [Assembleur inline C++] Récupérer l'offset d'un label
    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 :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    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...

    Merci d'avance pour vos réponses

  2. #2
    Membre régulier
    Inscrit en
    Août 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 12
    Par défaut
    Ton compilateur signale que Label, en tant que variable, n'est pas déclarée. Et c'est bel et bien le cas vu que tu utilises ce nom comme label .
    Un label représente une adresse/position. Même utilisation qu'avec les goto etc que tu dois surement déjà connaitre si tu fais du C++.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 7
    Par défaut
    Citation Envoyé par Neutral Voir le message
    Ton compilateur signale que Label, en tant que variable, n'est pas déclarée. Et c'est bel et bien le cas vu que tu utilises ce nom comme label .
    Un label représente une adresse/position. Même utilisation qu'avec les goto etc que tu dois surement déjà connaitre si tu fais du C++.
    Je comprend bien ou est fondamentalement l'erreur... du moins comment le compilateur l'interprète mais justement étant très amateur dans l'assembleur, 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?

  4. #4
    Membre régulier
    Inscrit en
    Août 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 12
    Par défaut
    Ha ok, je vois maintenant ce que tu voulais faire. Je croyais que tu étais partis par mégarde sur autres chose.

    Je n'ai jamais toucher à Open Watcom, mais un :
    Ca devrait passer?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 7
    Par défaut
    Malheureusement non toujours la même erreur...

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 487
    Par défaut
    Essaie tout simplement :


    Une étiquette (label en anglais) est en elle-même un symbole, qui représente une valeur. Étant donné que celle-ci ne correspond à rien de plus compliqué qu'une position en mémoire, il n'y a pas d'ambigüité, et le symbole sera directement substitué par ce à quoi il correspond.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Intégrer de l'assembleur inline
    Par jackoboss dans le forum Dev-C++
    Réponses: 2
    Dernier message: 08/12/2007, 13h19
  2. [GCC] Assembleur inline et instructions SSE2
    Par progfou dans le forum Linux
    Réponses: 3
    Dernier message: 27/06/2007, 20h44
  3. [boso kernel] Assembleur inline GCC - Undefined Reference
    Par Edouard Kaiser dans le forum Programmation d'OS
    Réponses: 13
    Dernier message: 29/07/2005, 09h24
  4. Assembleur inline & FPO - VC++ 6.0
    Par rigobert dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 19/06/2005, 00h23
  5. [DevC++]Assembleur inline
    Par Lung dans le forum Dev-C++
    Réponses: 6
    Dernier message: 21/08/2003, 16h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo