aboutsummaryrefslogtreecommitdiff
path: root/semestre 3/architecture des ordinateurs/td/25-10-08.md
diff options
context:
space:
mode:
Diffstat (limited to 'semestre 3/architecture des ordinateurs/td/25-10-08.md')
-rw-r--r--semestre 3/architecture des ordinateurs/td/25-10-08.md71
1 files changed, 71 insertions, 0 deletions
diff --git a/semestre 3/architecture des ordinateurs/td/25-10-08.md b/semestre 3/architecture des ordinateurs/td/25-10-08.md
new file mode 100644
index 0000000..45c488e
--- /dev/null
+++ b/semestre 3/architecture des ordinateurs/td/25-10-08.md
@@ -0,0 +1,71 @@
+---
+tags:
+ - sorbonne
+ - informatique
+ - architecture-des-ordinateurs
+ - td
+semestre: 3
+---
+`.text` permet de donner les instructions
+`.data` permet de mettre des variables globales en mémoire
+-> elles sont chargées en mémoire
+|> `.data` est dans la partie donnée utilisateur
+|> `.text` est dans la partie dédiée au programme
+
+La mémoire user commence en `0x10010000`
+
+La directive `.align` permet d'aligner les `.space`
+
+Pour init des chaînes de caractère, on utilise `.asciiz` pour bien rajouter le caractère de fin de chaîne !
+
+`sw $9, 4($8)` est `0b101011 01000 01001 0000 0000 0000 0100`
+
+```asm
+.data
+var1: .word 0xFF
+ .align 2
+var2: .space 4
+.text
+ lui $8,0x1001
+ ori $8,$8,0x0000
+ lw $9,0($8)
+ addiu $9,$9,5
+ sw $9,4($8) # 4 car c'est un word
+
+ ori $2, $0, 10
+ syscall
+```
+
+```c title="équivalent du programme assembleur du dessus"
+int var1 = 255;
+int var2;
+
+int main(){
+ var2 = 47 + 5;
+ return 0;
+}
+```
+
+| Adresse | octet $n$ | octet $n+1$ | octet $n+2$ | octet $n+3$ | mot |
+| ---------- | --------- | ----------- | ----------- | ----------- | ---------- |
+| 0x10010000 | 0x00 | 0x01 | 0x00 | 0x00 | 0x00000100 |
+| 0x10010004 | 0x11 | 0x22 | 0x33 | 0xFF | 0xFF332211 |
+| 0x10010008 | 0x31 | 0x32 | 0x33 | 0x00 | "123" |
+| 0x1001000c | | | | | |
+```asm
+.data
+tab: .word 1,2,34,256,-1
+chaine: .asciiz "toto"
+.text
+ lui $8, 0x1001
+ lw $4, 12($8)
+ ori $2, $0, 1
+ syscall
+
+ addiu $9, $8, 20 # récupère l'addresse de la chaîne
+ lw $4, 8($9)
+ syscall
+
+ ori $2, $0, 10
+ syscall
+```