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 :

programmer un simulateur d'une machine virtuelle d'un assembleur en langage C


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut programmer un simulateur d'une machine virtuelle d'un assembleur en langage C
    bonjour et tout d'abord bonne année a tout le monde.
    en fet je bloque sur un sujet qui un programme d'assembleur qu'on doit faire en C ;il s'agit de faire le programme suisvant:

    le programme recupère un fichier texte dans lequel est ecrit un programme en assembleur(une instruction par ligne)et genere un fichier texte ou est stické le programme en langage machine(une instruction ,soit 4 octet ecrits en decimal, par ligne).s'il ya des erreurs de syntaxe dans le fichier source,il ne faudra pas genere un fichier code machine mais signaler l'erreur en indiquant la ligne erronée.une instruction peut avoir une etiquette , representé par "etiq:" avant l'instruction. dans ce cas , un saut " JMP (ou autre) etiq " pourra s'ecrire " JMP(R0)adr" ou adr est l'adresse calculé par l'etiquette.la premier instruction sera toujours placé a l'adresse 0, la deuxiee a l'adresse 4 ce qui permet de calculé l'adresse des saut si ceux ci s donné par une etiquette.

    J'ai du mal a savoir par ou commencé, comment recupérer un fichier texte et coment faire avec de etiquettes? si quelqu'un peut m'aider?
    merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2006
    Messages : 107
    Points : 124
    Points
    124
    Par défaut
    Bonsoir,
    Déjà, écrire correctement t'aidera à avoir des réponses :p

    Tu dois écrire un assembleur, qui convertit du code assembleur en code objet.
    Il y a pas mal de questions à se poser avant de se lancer. Celles ci vont déterminer la difficulté qui t'attend :

    -la première chose à connaitre est ton jeu d'instructions. Tu dis 4 octets par instruction, donc un jeu 32 bits. Combien de bits pour l'opcode, pour les registres? Gère tu les valeurs immédiates ?
    La complexité du jeu d'instructions va beaucoup jouer..
    -As tu un ordre des octets (endianness) à respecter ?
    -vas tu utiliser un fichier de config pour lire les valeurs associées aux codes opérations ? (style MOV='00000' ADD='00001' SUB='00010')
    -Pour les étiquettes, qui ont l'air de te géner, tu peux parcourir une première fois le fichier assembleur en indexant chaque étiquette avec son numéro de ligne.
    Lorsque tu trouveras une référence a une étiquette tu pourra alors calculer le déplacement relatif : (numero_ligne_associee_a_letiquette - numero_ligne_faisant_referance_a_letiquette) * 4 .
    Le déplacement peut être négatif.

    Voila quelques questions qui t'aideront peut être à y voir clair avant de se lancer dans du code!

    Cordialement

  3. #3
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    - Ecrit un programme qui lit ligne par ligne et affiche la ligne

    - Ecrit une fonction qui prend une ligne et reconnait l'instruction

    - Ecrit une fonction qui gére l'instruction mov, une autre pour l'instruction jmp... Ces fonctions prendront une ligne de texte qui contiendra les arguments de l'opération et retourneront 32 bits représentant l'instruction..

    Jc

Discussions similaires

  1. Intégrer une machine virtuelle à son programme
    Par floctc dans le forum Général Java
    Réponses: 9
    Dernier message: 09/06/2010, 14h14
  2. [GRUB & GDM] lancer une machine virtuelle dès le demarrage
    Par metatron dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 24/09/2007, 09h40
  3. vista sur une machine virtuelle
    Par Nemesys dans le forum Windows Vista
    Réponses: 16
    Dernier message: 01/02/2007, 19h12
  4. Accéder à un serveur sur une machine virtuelle?
    Par Death83 dans le forum Administration
    Réponses: 2
    Dernier message: 21/11/2006, 16h13
  5. [J2ME]Une machine virtuel standart pour PDA
    Par Wln dans le forum Java ME
    Réponses: 3
    Dernier message: 30/06/2005, 09h45

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