Le langage d'assemblage MIPS - registre temporaire vs registres enregistrés
Jusqu'à présent j'ai été en utilisant les registres $s0-$s9 et de la même manière que les registres $t0$en t9. J'ai été entendu et lu d'innombrables messages du forum et les paragraphes ici et sur Google en expliquant la différence, mais avec aucun des exemples de code. Je me suis dit que je devrais voir la différence qu'il a trait à l'aide de procédures, mais j'ai créé un nombre incalculable de scénarios impliquant des procédures dans un effort pour trouver la différence entre enregistré registres vs registre temporaire, mais j'ai échoué.
Je voudrais voir un relativement simple exemple où un $t0-9 registre ne serait pas agir comme un $s0-9 registre et, par conséquent, de produire une valeur différente?
source d'informationauteur shawn a
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas de différence entre les temporaires et variables sauvegardées dans la façon dont ils travaillent. La différence est dans la façon dont ils sont utilisés, ou plutôt, comment ils devraient être utilisés.
Le MIPS convention d'appel indique comment les divers registres sont utilisés -- le
$v
registres sont de retours de fonction, le$a
registres sont pour les arguments de la fonction, la$t
variables sont temporaires appelant enregistré registres, tandis que le$s
registres sont appelé enregistré.La différence entre l'appelé et de l'appelant est enregistré comme suit: lors de l'appel d'une fonction, la convention garantit que le
$s
registres sont les mêmes après le retour attendu que la convention ne garantit pas cela pour le$t
registres. Bien sûr, cela signifie que si vous souhaitez utiliser le$s
s'inscrit dans une routine, vous devez sauvegarder et de restaurer leurs valeurs. Par exemple, si la fonction utilise les registres$t0
et$s0
et puis appelle une fonction de B, il doit enregistrer au registre$t0
si on veut l'utiliser après la fonction B retourne. La fonction B doit sauver$s0
avant de pouvoir commencer à l'utiliser.Un exemple:
Ce lien ressemble à une décente de l'information plus détaillée.
Bien sûr, tout cela n'est qu'une convention, et par conséquent, il ne fonctionne que si vous et les autres programmes du respect de la convention par la sauvegarde et la restauration
$s
registres, de sorte qu'ils ne soient pas écrasés par un appel de fonction.