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

Autres architectures Assembleur Discussion :

Programmation d'un émulateur pour assembleur POLY


Sujet :

Autres architectures Assembleur

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Programmation d'un émulateur pour assembleur POLY
    Bonjour!

    j'ai besoin d'aide SVP (sachant que je suis débutante en langage C et en Assembleur) : je dois écrire un émulateur en langage c pour un assembleur. Toutes ses instructions sont codées sur 32 bits avec 11 bits de poids faible inutilisées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    opcode      ri          rj               rk                n/c
    4bits       3bits       3bits            3bits             8bits
    En fait, dans un premier temps, je dois écrire un programme lisant dans un fichier le code objet produit par l’assembleur créant en sortie la version codée en hexadecimal

    Ex : entree: read r1 sortie: $12000000 (sachant que read: OOOO)

    Merci d'avance

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Kie,

    En étant à la fois débutante en C et en assembleur, la première chose à faire est surtout d'apprendre ces langages.

    Sinon, tu fais ce qu'on appelle chez moi "vouloir courir avant de savoir marcher".
    Si les cons volaient, il ferait nuit à midi.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut merci de ton conseil
    merci pour ton conseil ,mais je dois vraiment rediger son programme car j'ai pas vraiment le choix et en plus il y'a toujours une premiere fois
    donc si quelqu'un peut m'aider ou me conseiller ca sera cool

    merci d'avance

  4. #4
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 416
    Points
    59 416
    Billets dans le blog
    2
    Par défaut
    Bonjour et bienvenue !
    Citation Envoyé par zoulika Voir le message
    En fait, dans un premier temps, je dois écrire un programme lisant dans un fichier le code objet produit par l’assembleur créant en sortie la version codée en hexadecimal

    Ex : entree: read r1 sortie: $12000000 (sachant que read: OOOO)
    Désolé, j'ai un peu de mal à comprendre : il s'agit bien d'un assembleur fictif pour une machine fictive ?
    Je ne comprends pas non plus ton exemple, à la lumière de la structure des instructions que tu as détaillée.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut oui exactement
    OUI, il s'agit bien d'un assembleur fictif pour une machine fictive : en fait c'est un assembleur pour une machine poly , Son processeur
    dispose de 5 registres r0, r1, r2, r3, r4 de 8 bits pouvant contenir des entiers signés codés en complément à2 et d’un registre lr de 1 bit.
    et je dois plus precisement écrire un assembleur pour le langage d’assemblage de POLY prenant en entrée le nom d’un fichier texte
    contenant un programme en assembleur ( par ex: pow r2, r1, 2) et créant en sortie la version en machine correspondant( par ex:$34401000)
    Sachant que toutes les instructions sont codées sur 32 bits avec 11 bits de poids faible inutilisées :
    opcode ri rj rk n/c
    4bits 3bits 3bits 3bits 8bits

    voila j'espere que j'ai mieux expliqué, j'espère que vous poussiez m'aider
    j'en ai vraiment besoin
    Merci d'avance

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut j'ai vraiment besoin d'aide
    Je n''ai toujours pas eu de réponse. Si jamais je n'avais toujours pas bien expliqué, n'hesitez pas à me le redemander.

    J'ai vraiment besoin d'aide.

    merci d'avance

  7. #7
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 416
    Points
    59 416
    Billets dans le blog
    2
    Par défaut
    Tu devrais préciser quel problème tu rencontres au niveau du langage d'assemblage.
    Des instructions de taille fixe constituées d'un opcode de taille fixe + 3 bits pour chaque n° de registre (ou pour spécifier une opérande mémoire ?), c'est beaucoup plus facile à gérer que les jeux d'instructions des machines réelles.

    Quelles sont les instructions reconnues par le processeur de la machine virtuelle ?
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  8. #8
    Nouveau Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut voici le jeu d'instruction du processeur, merci d'avance
    j'ai vraiment besoin d'aide , je m'en sors pas vraiment:
    je dois ecrire un émulateur pour la machine poly comme je l'ai dit precedement mais je ne sais ps d'ou commencer, voivi le jeu d'instruction du processeur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    opcode   instruction         action
    
    0000     load ri,c           ri<--c
    
    0001     read ri             lit un entier au clavier et le stocke dans ri
    
    0010     print ri            affiche le contenu de ri à l'ecran
    
    0101     daxpy ri, rj, rk    ri<--ri+rj*rk
    
    0011     pow ri, rj, n       ri<-- rj puissance n
    
    0100     pow ri,rj,rk        ri<--rj puissance rk
    
    0110     setlr               lr<--1
    
    0111     resetlr             lr<--0
    
    1000     loop ri, c          saute c instructions en avant ou en arrière (en fonction du
                                 signe de c) si la valeur du registre r0 est < à celle de ri
                                 ajoute ensuite 1à r0 si lr vaut 1 ou lui retire 1 si lr vaut 0
    
    1001     end                 arrête le programme
    donc voici le jeu d'instruction du processus,
    j'espere que quelqu'un pourra m'aider ou me conseiller car j'en ai vraiment besoin
    merci d'avance

  9. #9
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 416
    Points
    59 416
    Billets dans le blog
    2
    Par défaut
    Commençons par l'identification des registres sur 3 bits
    • r0 --> identificateur = 0 --> 000 en binaire
    • r1 --> identificateur = 1 --> 001 en binaire
    • r2 --> identificateur = 2 --> 010 en binaire
    • r3 --> identificateur = 3 --> 011 en binaire
    • r4 --> identificateur = 4 --> 100 en binaire

    Cela vaudra donc dire que, si l'on a l'instruction
    il faudra construire le code machine comme ceci :
    • Opcode sur 4 bits : pow --> 0100
    • ri sur 3 bits : r0 --> 000
    • rj sur 3 bits : r2 --> 010
    • rk sur 3 bits : r3 --> 011
    • 8 bits réservés --> 00000000
    • 11 bits inutilisés --> 00000000000

    Le code machine sera 01000000100110000000000000000000
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Ce projet me dit quelque chose... Tu ne serais pas à la fac de Nantes ?

    Si c'est le cas, je dois pouvoir retrouver ce que j'ai fait... cela y ressemble fortement

Discussions similaires

  1. Réponses: 19
    Dernier message: 05/09/2007, 16h19
  2. Un petit Programme sur la Geolocalisation pour le plaisir
    Par blondelle dans le forum C++Builder
    Réponses: 2
    Dernier message: 07/08/2007, 12h58
  3. Programme C++ de console pour Lua
    Par Xitog dans le forum C++
    Réponses: 1
    Dernier message: 30/05/2007, 19h46
  4. programmer un plug-in pour combustion (discreet)
    Par fabyyy dans le forum Développement 2D, 3D et Jeux
    Réponses: 3
    Dernier message: 14/12/2006, 16h54
  5. Quel est le langage de programmation le plus pertinent pour du traitement audio ?
    Par LeTouriste dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 02/11/2006, 11h42

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