From 4ed8060318b1807638c12b8b43660bb98fc99fba Mon Sep 17 00:00:00 2001 From: Anhgelus Morhtuuzh Date: Fri, 10 Oct 2025 23:15:18 +0200 Subject: Cours du 6 au 10 octobre --- .../architecture des ordinateurs/td/25-10-08.md | 71 ++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 semestre 3/architecture des ordinateurs/td/25-10-08.md (limited to 'semestre 3/architecture des ordinateurs/td/25-10-08.md') 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 +``` -- cgit v1.2.3