diff options
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.md | 37 |
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 |
