###### Module de chaînes strings.s # fonction str_len : calcule la longueur d’une chaîne # a1 : pointeur sur le début de la chaîne # a2 : renvoyé avec la longueur str_len: mv t1, a1 # copie de a1 pour utilisation addi a2, zero, -1 # a2 <- -1 loop: lbu t2, 0(t1) # caractère courant addi a2, a2, 1 # un caractère de plus addi t1, t1, 1 # pointer sur le caractère suivant bne t2, zero, loop # encore ? ret ###### # fonction print_str : affiche une chaîne # a1 : pointeur sur la chaîne print_str: addi sp, sp -4 # sauvegarde ra sur la pile sw ra, 0(sp) jal ra, str_len # fonction de calcul de la longueur addi a0, x0, 1 # 1 = StdOut addi a7, x0, 64 # appel système Linux write ecall # appel Linux écriture de la chaîne lw ra, 0(sp) # restauration de ra depuis la pile addi sp, sp,4 # pour l’adresse de retour ret ###### ###### # Lecture d’une ligne # a0 : descripteur du fichier # a1 : -> buffer # a2 : longueur maximum du buffer read_line: addi sp, sp -4 # sauvegarde ra sur la pile sw ra, 0(sp) li a7, 63 ecall # lecture lw ra, 0(sp) # restauration de ra depuis la pile addi sp, sp,4 # pour l’adresse de retour ret ###### ###### # Écriture d’une ligne # a0 : descripteur du fichier # a1 : -> buffer # a2 : longueur du buffer write_line: addi sp, sp -4 # sauvegarde ra sur la pile sw ra, 0(sp) li a7, 64 ecall # écriture lw ra, 0(sp) # restauration de ra depuis la pile addi sp, sp,4 # pour l’adresse de retour ret ######