Académique Documents
Professionnel Documents
Culture Documents
Syntaxe Assembleur Opérations Commentaires Effet Format Rd, Rs, Rt Détection de dépassement R
add addition Rd ← Rs + Rt
de capacité
Opérations de transferts ALU (move from/to)
Rd, Rs, Rt Détection de dépassement R
mfhi Rd Copie du champ Hi cf. mult/div Rd ← Hi R sub soustraction Rd ← Rs − Rt
de capacité
mflo Rd Copie du champ Lo cf. mult/div Rd ← Lo R Pas de détection de
addu Rd, Rs, Rt addition (non-signée) Rd ← Rs + Rt R
dépassement de capacité
mthi Rs Chargement du champ Hi cf. mult/div Hi ← Rs R
Rd, Rs, Rt soustraction (non- Pas de détection de R
mtlo Rs Chargement du champ Lo cf. mult/div Lo ← Rs R subu Rd ← Rs − Rt
signée) dépassement de capacité
Rt, I Chargement d’une Rt ← I << 16 I Détection de dépassement
lui Chargement immédiat addi Rt, Rs, I addition (op. imm.) Rt ← Rs + I I
constante de capacité
Opérations de transferts registre-RAM (load/store) addition (op. imm., Pas de détection de
addiu Rt, Rs, I Rt ← Rs + I I
lw Rt, I(Rs) Chargement mot Rt ← RAM[Rs+I] I non signée) dépassement de capacité
lh Rt, I(Rs) Chargement demi-mot Extension de signe Rt ← RAM[Rs+I] I Rs, Rt Hi ← pref32 (Rs × Rt) R
mult multiplication
Lo ← suf f32 (Rs × Rt)
lhu Rt, I(Rs) Chargement demi-mot non-signé Sans extension de signe Rt ← RAM[Rs+I] I
Rs, Rt multiplication Hi ← pref32 (Rs × Rt) R
multu
sh Rt, I(Rs) Déchargement demi-mot RAM[Rs+I] ← Rt I opérandes non signés Lo ← suf f32 (Rs × Rt)
lb Rt, I(Rs) Chargement octet Extension de signe Rt ← RAM[Rs+I] I Rs, Rt Hi ← Rs mod Rt R
div division
Lo ← Rs/Rt
lbu Rt, I(Rs) Chargement octet non-signé Sans extension de signe Rt ← RAM[Rs+I] I
Rs, Rt division opérandes Hi ← Rs mod Rt R
sb Rt, I(Rs) Déchargement octet RAM[Rs+I] ← Rt I divu
non signés Lo ← Rs/Rt
Instructions logiques
Instructions de branchement de code
Décrire la visibilité
— .extern Etq taille : déclare la donnée enregistrée à l’adresse Etq sur taille octets consécutifs
comme étant globale au fichier. Place la donnée dans le segment des données.
— .globl Etq : déclare l’étiquette Etq est un symbole globale visible dans d’autres fichiers
assembleur.
31 26 25 21 20 16 15 11 10 6 5 0
Format d’instruction R Rs Rt Rd
Table d’encodage ASCII
code op decval fonct.
reg.operande reg.operande reg.dest.
registre−registre
0 1 2 3 4 5 6 7 8 9 A B C D E F
31 26 25 21 20 16 15 0
Format d’instruction I 0 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
Rs Rt
code op Immédiat 16bits
immédiat
reg.operande reg.operande 1 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
2 ! " # $ % & ' ( ) * + , - . /
31 26 25 0
Format d’instruction J 3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
code op Adresse 26 bits
saut d’instructions 4 @ A B C D E F G H I J K L M N O
5 P Q R S T U V W X Y Z [ \ ] ^
6 ` a b c d e f g h i j k l m n o
CODE OP 7 p q r s t u v w x y z { | } ˜ DEL
Bits 28:26
HH Exemple : le caractère 'A' est encodé par 65 (4 × 16 + 1), ou encore (41)16 .
HH 000 001 010 011 100 101 110 111
BCOND COPRO
0 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bit 16 Bit 23 31 30 23 22 Indexation usuelle des bits 0
HH HH
HH 0 1 HH 0 1
Bit 20 0 BLTZ BGEZ Bit 25 0 MFC0 MTC0
Quelques remarques : l’exposant encodé est un exposant biaisé. Il faut retrancher le biais B =
1 BGTZAL BGEZAL 1 RFE
127 de cette valeur pour obtenir l’exposant réel du nombre encodé. Seule la partie fractionnaire
de la notation scientifique normalisée est encodée dans la mantisse. Ainsi, l’exemple ci-dessus
encode le nombre 0, 15625.
SPECIAL
Bits 2:0
HH
HH 000 001 010 011 100 101 110 111