aboutsummaryrefslogtreecommitdiff
path: root/semestre 3/architecture des ordinateurs/2- Programmation en ASM Mips.md
diff options
context:
space:
mode:
Diffstat (limited to 'semestre 3/architecture des ordinateurs/2- Programmation en ASM Mips.md')
-rw-r--r--semestre 3/architecture des ordinateurs/2- Programmation en ASM Mips.md37
1 files changed, 36 insertions, 1 deletions
diff --git a/semestre 3/architecture des ordinateurs/2- Programmation en ASM Mips.md b/semestre 3/architecture des ordinateurs/2- Programmation en ASM Mips.md
index 0e1de16..002c89e 100644
--- a/semestre 3/architecture des ordinateurs/2- Programmation en ASM Mips.md
+++ b/semestre 3/architecture des ordinateurs/2- Programmation en ASM Mips.md
@@ -335,4 +335,39 @@ Branchement sont en format I
**Dans tous les cas, on a besoin de savoir où se trouve l'étiquette pour la coder**
|> on a donc besoin de le faire en deux étapes (on les appelle "passe")
1. on s'occupe de toutes les instructions sans traiter les étiquettes
-2. on traite les étiquettes après qu'on connait bien tout \ No newline at end of file
+2. on traite les étiquettes après qu'on connait bien tout
+
+**Revoir la construction des sauts**
+## Tableaux, structures
+**revoir le début des tableaux**
+
+Un tableau de taille $n$ prend $n$ fois la taille du type stocké
+|> un tableau d'entier prend $4n$ octets
+
+L'adresse du $i$-ième élément du tableau est l'adresse du début $+ i\times n$
+|> c'est déréférencer `&T[i]`
+
+On déclare les tableaux comme
+```asm
+.text
+tab: .word 1, 2, 3 # équivalent de int tab[] = {1,2,3};
+```
+
+Attention à l'alignement quand on utilise les tableaux !
+
+Les structures sont des ensembles de variables
+|> on utilise les `.space` pour en initialiser des vides
+
+**besoin de vérifier si c'est complet**
+## Variables locales
+Elles ne sont pas au même endroit que les variables globales
+|> elles sont dans une zone variable qui contient les infos dynamiques
+-> la pile !
+|> création d'un contexte pour chaque fonction
+|> contexte sont en LIFO, d'où la pile
+
+**rattraper la gestion mémoire**
+`0x8000 0000` -> égal ou plus grand pour le système
+|> ce qui précède `0x8000 0000` est pour l'utilisateur
+|> le fond de la partie utilisateur sont les contextes de fonction (la pile !)
+-> le sommet de la pile est variable et est dans un registre particulier, le `$29` (stack pointer) \ No newline at end of file