J'apprends la base du langage d'assemblage en utilisant MIPS et le simulateur MARS. Le titre contient ma question, mais je vais essayer de l'étendre avec un exemple. Supposons que nous voulions lire une chaîne à partir du clavier (200 caractères maximum). Nous devons façons de procéderLes chaînes de l'entrée, où ils devraient être stockés, les données dynamiques ou statiques?
1) Nous allouons 201 octets sur le segment de données statiques, faire l'appel système pour lire la chaîne, puis reportez-vous à par adresse « string »
.data
string: .space 201
.text
li $v0, 8
la $a0, string
li $a1, 201
syscall
2) Nous requête par la fonction sbrk (la seule disponible sur MARS) 201 octets consécutifs sur le tas, puis nous les remplissons avec la chaîne d'entrée.
li $v0, 9
la $a0, 201
syscall
move $s0, $v0
li $v0, 8
move $a0, $s0
li $a1, 201
syscall
Quels sont les avantages et les inconvénients des deux méthodes? J'ai toujours vu dans les exemples MIPS la première méthode, mais je ne peux pas comprendre que la seconde ne soit pas utilisée.
Merci d'avance :)
Les exemples n'utilisent pas la seconde méthode simplement pour garder l'exemple simple. Un vrai programme peut utiliser l'une ou l'autre méthode. – markgz