Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Invité de passage
    Femme Profil pro rihem dalhoumi
    Étudiant
    Inscrit en
    janvier 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Nom : Femme rihem dalhoumi
    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 :
    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
    471
    Détails du profil
    Informations professionnelles :
    Activité : être humain

    Informations forums :
    Inscription : décembre 2007
    Messages : 471
    Points : 623
    Points
    623

    Par défaut

    Citation Envoyé par snow_angel Voir le message
    Bonjour

    Voici une macro pour Mars 4.1 (MIPS)

    Code :
    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 :
    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •