1. #1
    Invité de passage
    Femme Profil pro
    Étudiant
    Inscrit en
    janvier 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : janvier 2012
    Messages : 1
    Points : 0
    Points
    0

    Par défaut Macro en langage assembleur Mars 4.1

    Bonjour

    Voici une macro pour Mars 4.1 (MIPS)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    matelment $1$2,$3,$4
    sll $1,RG3,2
    add $1,$1,RG4
    sll $1,$1,2
    add $1,$1,RG2
    lw rG1,0($1)
    SVP, qui peut m'expliquer les étapes de cette macro qui permet d'extraire un élément d'une matrice ?

  2. #2
    Membre chevronné
    Avatar de edfed
    être humain
    Inscrit en
    décembre 2007
    Messages
    476
    Détails du profil
    Informations professionnelles :
    Activité : être humain

    Informations forums :
    Inscription : décembre 2007
    Messages : 476
    Points : 627
    Points
    627
    Billets dans le blog
    1

    Par défaut

    Citation Envoyé par snow_angel Voir le message
    Bonjour

    Voici une macro pour Mars 4.1 (MIPS)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    matelment $1,$2,$3,$4 ;ici, il faut pas oublier de separer $1 et $2 par une ,
    sll $1,RG3,2 ;
    add $1,$1,RG4
    sll $1,$1,2
    add $1,$1,RG2
    lw rG1,0($1)
    SVP, qui peut m'expliquer les étapes de cette macro qui permet d'extraire un élément d'une matrice ?
    sans connaitre l'assembleur mips, on peut constater qu'il y a un calcul puis un chargement à partir du calcul.

    mais en regardant ici -> http://www.mrc.uidaho.edu/mrc/people...al/MIPSir.html
    et ici-> http://courses.missouristate.edu/Ken...20Tutorial.doc (à la page 18).
    le calcul semble etre effectivement un calcul de position dans une table de valeurs 32 bits.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    element (RG1,RG2,RG3,RG4)
    cellule=RG3*4
    cellule=cellule+RG4
    cellule=cellule*4
    cellule=cellule+RG2
    RG1=[cellule]
     
    element (returnvalue,tablepointer,collumn,line)
    cellule=collumn*4 ;4=nombre de lignes
    cellule=cellule+line ;plus le numero de ligne
    cellule=cellule*4 ;4=taille d'un element
    cellule=cellule+tablepointer
    returnvalue=[cellule]
    donc apparement, la largeur de la matrice de 4 lignes sur X collonnes d'elements de 4 octets (ou l'inverse x lignes de 4 collones)...
    la coordonnée de la case est passée par $3 et $4
    la matrice est passée par $2 et la valeur de la case est retournée dans $1.

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