J'essaie simplement de lire une chaîne à partir de l'entrée de la console. J'exécute xspim pour simuler mais j'ai besoin de cela pour fonctionner en mode nu, ce qui signifie que je ne peux pas utiliser de pseudo instructions, et la plupart des choses que j'ai trouvées en ligne sont des façons de faire cela. Dans toute la documentation que je suis en train de lire, il est indiqué d'utiliser l'instruction "la" pour stocker la chaîne dans $ a0, mais cette instruction n'est pas disponible pour nous. Je lis à propos de ce que cet enseignement traduit, et il devient effectivement un "lui" suivi d'un "ori". La partie qui me lance est que nous sommes supposés entrer le nombre d'octets entre le premier emplacement de données (toujours 0x 1000 0000) et l'adresse du premier octet dans la chaîne. Je ne suis pas sûr de savoir quel serait le premier octet de ma chaîne. Voici ce que j'ai:Comment obtenir des adresses pour les données statiques dans MIPS fonctionnant en mode nu (pas de pseudo-instruction)
.globl main
.globl done
.globl convert
.data
prompt: .asciiz "Enter a decimal number, to quit type 'quit':" #45
result: .asciiz "The number you entered is " #72
input: .space 64
.text
convert:
main: addi $v0, $0, 4 #Print prompt to enter number
lui $a0, 0x1000 #Address of prompt
syscall #Display prompt
addi $v0, $0, 8 #Setting up syscall to read in string
lui $at, 4097
ori $a0, $at, input #Where I want my string to be stored
addi $a1, $0, 64 #How long my string will be
syscall #Syscall to read in string
Vous pouvez contourner ce problème en utilisant un tampon sur la pile (pour le tampon d'entrée). –