--- 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 ```