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 :

[MIPS] Les instructions en assembleur MIPS


Sujet :

Autres architectures Assembleur

  1. #1
    Membre du Club
    Homme Profil pro
    Etudiant-Benevole pour Electronic-MasterX
    Inscrit en
    Janvier 2015
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Islande

    Informations professionnelles :
    Activité : Etudiant-Benevole pour Electronic-MasterX
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2015
    Messages : 70
    Points : 44
    Points
    44
    Par défaut [MIPS] Les instructions en assembleur MIPS
    Bien le bonsoir.
    j'aimerai comprendre comment fonctionne l'instruction lw en MIPS assembler. j'ai regardé sur le net et j'ai vu que Load word pouvait se remplacer par un Lui et un ori* mais j'ai pas trop bien compris comment.

    j'aimerai aussi comprendre comment fonctionne les instructions avec link comme par exemple jal* (jump and link)

    j'aimerai aussi savoir ce que veut dire*advance_pc(4) en fait ce lui ci je l'i vu dans ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    AND -- Bitwise and 
    *
    Description: Bitwise ands two registers and stores the result in a register 
    *
    Operation:* $d = $s & $t; advance_pc (4); 
    *
    *Syntax:* and $d, $s, $t
    il apparaît en effet dans presque toute les defintions d'instruction que j'ai trouvé surhttp://www.mrc.uidaho.edu/mrc/people...l/MIPSir.html.

    j'aimerai aussi connaître quel est la difference entre ADD et ADDU. j'ai lu dans un pdf que ADD signale les overflow mais pas ADDU et que c'est pareil pour SUB, *DIV et MUL.


    je vous remercie pour vos reponses.


    Que la Science Soit Avec Vous

  2. #2
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    le MIPS reste particulier comme assembleur je trouve.

    La différence entre lw et lui c'est que le premier permet de charger via une adresse , alors que le seconde charge via une valeur immédiate (mais il la charge sur la partie "haute" du registre).
    Entre ADD et ADDU , un ajoute de manière signé et l'autre d'un non signé (donc oui une histoire de overflow).
    Pour advance_pc (4); cela veut tout simplement dire que le PC(program counter) avance de 4 (mais c'est pas une surprise les opcodes ont cette taille la :p )

    Tu as deja fait du MIPS ? parce que j'ai l'impression que tu l'étudie de manière totalement théorique , si tu code un peu tu vois concrétement toutes ces différences

    Que la Science Soit Avec Vous
    « L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes. »
    Bref pour dire que l'assembleur par exemple est un domaine plus technique que scientifique.

  3. #3
    Membre du Club
    Homme Profil pro
    Etudiant-Benevole pour Electronic-MasterX
    Inscrit en
    Janvier 2015
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Islande

    Informations professionnelles :
    Activité : Etudiant-Benevole pour Electronic-MasterX
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2015
    Messages : 70
    Points : 44
    Points
    44
    Par défaut
    ça signifie quoi la partie superieure du registre?

    et je ne comprends toujours pas quand on dit que ADDU ne signale pas d'overflow alors que ADD signale les overflow. et j'ai aussi vu quelque part où est dit que lorsqu'on veut additionner deux nombres non signé on "doit" utiliser toujours ADDU sinon on risque de pas avoir une réponse juste. mais le truc est que si on ne sait pas le nombre sera signé ou pas. je sais aussi que dans les regles tous les nombres sont signés dans le cas si on met un plus devant les nombres positifs. mais la representattion des nombres positifs en complemments à deux ne changent pas. ils seront juste normalement converti en binaire. je suis un peu perdu dans ce sens là.

    et pourquoi l'overflow devrait apparaître dans ADDU et pas dans ADD?

    et s'il vous plait vous n'avez pas repondu à ma question sur jal (jump and link) que veux dire effectivement ce link?

    et pourquoi effectivement on doit faire advance_pc(4). et quand vous dites que la taille des op est 4 faites vous reference à leur taille en bit ou en octet?

    et non je ne fais pas le MIPS juste theorique (bon en theorie). je me suis installé le simulateur MARS je me fais mes tests dessus. je ne prends pas le risque de mettre mes processeurs en danger.

    et oui l'informatique je confirme l'informatique n'est pas la science des ordinateurs. croire cela serait juste de la pure ignorance.

    et oui il s'agit effectivement d'un domaine un peu plus technique ici mais meme la documentation dans le domaine technique n'est pas si courte que ça

  4. #4
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    " et non je ne fais pas le MIPS juste theorique (bon en theorie). je me suis installé le simulateur MARS je me fais mes tests dessus. je ne prends pas le risque de mettre mes processeurs en danger."
    Sur des machines réel , sauf si cette machine possède quelque chose de dangereuse , les opérations inconnu/interdite ne génère que des interruptions dans la plupart des cas.
    Pour l'émulateur MARS faute de mieux , oui même si j'avais fait du MIPS sur des architectures plus réel pour ma part :p


    Voila donc pour les réponses.
    ça signifie quoi la partie supérieure du registre?
    admettant que sur 2 octets j'ai ceci : 0xF073
    La partie haute c'est 0xF0 , la partie basse c'est 0x73
    sur le MIPS : $t = (imm << 16);
    Cela veut dire que si tu fait lui $t0,0xF073
    le registre ferait t0 = 0xF0730000

    et pourquoi effectivement on doit faire advance_pc(4). et quand vous dites que la taille des op est 4 faites vous reference à leur taille en bit ou en octet?
    Je parle de leur taille en octet , le PC avance obligatoirement sinon s'il serait a la même adresse il lirait toujours la même instructions.
    Sur pas mal de machine tu verra une en-tete qui indiquera l'initialisation du PC , vu que l'entré du programme peut varier sur les machines (même si elles utilisent toutes le même processeurs).

    et pourquoi l'overflow devrait apparaître dans ADDU et pas dans ADD?
    Bon beaucoup d'assembleur utilise le add avec un flag , c'est le cas aussi pour le MIPS.
    Si tu a un overflow et que tu utilise ADD , ben il fera +1 a l'addition , alors que ADDU ne le fait pas.
    Les autre processeurs ayant aussi ce 'souci' le propose avec une instruction supplémentaire pour réinitialisé le flag (et donc une addition est plus longue en cycle).
    A quoi cela sert ? si tu as une addition qui n'a pas forcément besoin de précision.
    Ou de faire des additions qui peut dépasser les bits prévue par le processeur.
    Par exemple sur 8 bits on peut faire des opération 16 bits justement parce que on connaît cet overflow.

    et s'il vous plait vous n'avez pas repondu à ma question sur jal (jump and link) que veux dire effectivement ce link?
    L'instruction dit que le retour est a l'adresse $31 , ce link est sûrement le nom donné a cette 'en-tete' , je sais que le MIPS a une en-tete constant mais je me souvient plus exactement lequel.

  5. #5
    Membre du Club
    Homme Profil pro
    Etudiant-Benevole pour Electronic-MasterX
    Inscrit en
    Janvier 2015
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Islande

    Informations professionnelles :
    Activité : Etudiant-Benevole pour Electronic-MasterX
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2015
    Messages : 70
    Points : 44
    Points
    44
    Par défaut
    Je vous remercie pour vos réponses.

    Vous dénouez un lien qui voulait m'etrangler et c'est pas faute d'avoir pas chercher quelqu'un qui s'y connaît en MIPS x

  6. #6
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Je reviens parce que il est probable que j'ai dit quelque betice XD

    Pour le jump and link c'est une mauvaise compréhension de ma part il ne revient pas a l'adresse $31 , mais revient par rapport a la valeur du registre 31 soit r31 ou ra.

    Pour ADDU et ADD , en faite non la différence ne se trouve que apparemment sur le flag overflow un l'active et l'autre non.

    Pour le MIPS je n'en est jamais eu l'occasion d'en faire beaucoup , un c'est pas vraiment un assembleur que je trouve très attirant , secundo il existe toujours des compilateur C pour le MIPS et je ne suis jamais tombé sur une machine suffisamment peu puissante qui expliquerai mon choix d'un full asm en MIPS.

  7. #7
    Membre du Club
    Homme Profil pro
    Etudiant-Benevole pour Electronic-MasterX
    Inscrit en
    Janvier 2015
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Islande

    Informations professionnelles :
    Activité : Etudiant-Benevole pour Electronic-MasterX
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2015
    Messages : 70
    Points : 44
    Points
    44
    Par défaut
    je ne comprends plus bien le truc avec ADD et ADDU. comment un active le flag overflow et pas l'autre? quelle est donc effectivement la ddifference entre les deux?

    est elle juste au niveau de cette activation?

    et précédement Vous avez oublié de repondre à pour quoi on doit additionner les valeurs non signés toujours avec ADDU et que se passe t-il lorsqu'on veut additionner deux variables et puis avant de le faire on fait multiple operations sur ces dernieres avant l'addition qui sont susceptible de modifier leur signe ou pas. comment gerer ça.


    je vous remercie de vos réponses

  8. #8
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Je ne comprend pas ce qui te pose souci en terme de compréhension ?

    Voila une doc officiel que j'ai pour le MIPS :
    the only difference between this instruction and the ADD instruction is the ADDU never causes an overflow exeption
    c'est clair non ? juste un flag activé ou pas.
    les addition signé ou pas auront le même effet.

  9. #9
    Membre du Club
    Homme Profil pro
    Etudiant-Benevole pour Electronic-MasterX
    Inscrit en
    Janvier 2015
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Islande

    Informations professionnelles :
    Activité : Etudiant-Benevole pour Electronic-MasterX
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2015
    Messages : 70
    Points : 44
    Points
    44
    Par défaut
    okay merci. c'est clair

    pouvez vous me donner le lien de la doc? je suis sur qu'elle se montrera interessante à l'avenir

  10. #10
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Il existe plusieurs version du MIPS , voila celle qui m'interesait :
    http://groups.csail.mit.edu/cag/raw/...n_book_Ed2.pdf

  11. #11
    Membre du Club
    Homme Profil pro
    Etudiant-Benevole pour Electronic-MasterX
    Inscrit en
    Janvier 2015
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Islande

    Informations professionnelles :
    Activité : Etudiant-Benevole pour Electronic-MasterX
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2015
    Messages : 70
    Points : 44
    Points
    44
    Par défaut
    Vous n'etiez pas un blagueur un 754 page en anglais. Bah j'ai à faire.

    Merci beaucoup

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

Discussions similaires

  1. [MIPS] Générer du code assembleur MIPS avec gcc
    Par kambinji dans le forum Autres architectures
    Réponses: 4
    Dernier message: 05/12/2015, 20h46
  2. Quelles sont les instructions en assembleur valables sur Windows Seven
    Par ShinobiX1 dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 20/10/2013, 13h27
  3. [MIPS R3000] Les instructions et les expressions
    Par hanou88 dans le forum Autres architectures
    Réponses: 3
    Dernier message: 15/12/2008, 00h30
  4. Etude de toutes les instructions de l'Assembleur
    Par kapac dans le forum x86 16-bits
    Réponses: 3
    Dernier message: 10/09/2007, 12h42
  5. Recherche logiciel pour développer en Assembleur MIPS
    Par __alex__ dans le forum Autres architectures
    Réponses: 2
    Dernier message: 19/04/2005, 17h14

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