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

C Discussion :

Assembleur: codage des labels


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 1
    Par défaut Assembleur: codage des labels
    Bonjour à toutes et à tous,

    Je suis en train de coder un Assembleur. J'en suis à la partie la plus complexe : la traduction des instructions assembleur en binaire / hexa. Je vois et sais comment faire, sauf pour les labels.

    J'ai compris qu'il fallait calculer la distance entre l'utilisation du label et sa "déclaration" en octets, puis la reporter dans le fichier qui contient les instructions convertit en binaire, la "distance" trouvée. C'est à dire indiquer dans le fichier .cor (qui contient les instructions convertit en binaire), la "distance" trouvée qu'il faut pour arriver à l'instruction correspondant au label en partant du début des instructions convertit.

    Seulement voilà, je ne vois pas du tout (pour le moment) comment faire pour élaborer un algo qui me calculerait tout ça..

    Si vous avez des conseils / indications à me donner, faites les moi savoir !

    Merci de m'avoir lu,

    Alexis

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 480
    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 480
    Par défaut
    Bonsoir,

    Il y a une difficulté supplémentaire : les micro-processeurs ont souvent plusieurs de coder les sauts relatifs, parfois même directement au sein du code opération. A contrario, L'adressage peut également être absolu, dans certaines circonstances. Dans ce dernier cas, tu places directement la valeur exacte de l'adresse correspondant à ton étiquette sans te soucier de l'endroit où tu le fais.

    L'algorithme en soi est extrêmement simple : tu fais la différence entre la position courante de l'instruction (ou, plus précisément, de la suivante) et la valeur de ton étiquette.

    La difficulté viendra du fait que l'étiquette en question peut se trouver en aval de l'endroit où elle est invoquée. Dans ce cas, il faudra laisser l'instruction courante « en blanc » et y revenir lors d'une deuxième passe une fois que tu auras passé en revue tous les symboles déclarés dans ton programme.

  3. #3
    Membre Expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Par défaut
    (un Epi* sur corewar ?.... j'essaye au hasard ;P)

    Je plussoie Obsidian :
    - Une première phase d'analyse de l'assembleur pour connaitre la taille des instructions une fois traduites (instruction avec ou sans complément qui peuvent dépasser)... et directement traduire tout cela en code machine, en laissant les labels partout (à toi de faire une liste distinguant le code machine des labels)
    - Une deuxième passe de calcul des @ (tu as l'ensemble des instructions traduites, et donc leur taille ! Il suffit de compter taille(instruction1) + taille(instruction2) + ...)
    - Remplacement des labels par les adresses
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

Discussions similaires

  1. [XML en Russe et Français] - Codage des carctères
    Par mpereg dans le forum XML/XSL et SOAP
    Réponses: 8
    Dernier message: 28/11/2007, 22h45
  2. [Sécurité] Codage des caractéres arabe
    Par riadh100 dans le forum Langage
    Réponses: 3
    Dernier message: 13/09/2005, 13h40
  3. Modifier le codage des pixels pour capture vidéo
    Par supergrey dans le forum DirectX
    Réponses: 10
    Dernier message: 27/08/2005, 10h48
  4. [Encodage] codage des caractères spéciaux
    Par soulhouf dans le forum Général Java
    Réponses: 11
    Dernier message: 24/08/2005, 12h07
  5. [VB6] Des labels qui réagissent à la souris
    Par murielle dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 24/10/2002, 14h19

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