Le passage d'Arguments: MIPS
Je voudrais passer d'un personnage comme argument d'une fonction en MIPS. Dois-je le faire en stockant le personnage dans le registre $a0, utilisez jal pour passer à la fonction, puis d'en extraire ce qui est dans $a0 dans un registre séparé à l'aide de lw?
Si quelqu'un pouvait me donner un exemple de passage d'un argument ou deux en MIPS, j'apprécierais vraiment. J'ai trouvé beaucoup d'infos sur le MIPS conventions d'appel, mais pas du tout, simple et concise, des exemples.
OriginalL'auteur Victor Brunell | 2014-02-13
Vous devez vous connecter pour publier un commentaire.
Pas besoin d'utiliser
lw
qui est pour l'extraction de termes à partir de la mémoire. Vous pouvez simplement utiliser$a0
dans la sous-routine.Prendre un coup d'oeil à cet exemple de "impression-char" de la fonction:
Comme l'a démontré, la valeur de l'
$a0
registre est utilisé uniquement dans le sous-routine car il renvoie la valeur qu'il a été donné avant lajal
.Également fait preuve de dilatation et la contraction de la pile est nécessaire pour appeler un sous-routage. Comme vous le remarquerez, la sous-routine ne pas effectuer cette opération, car il n'a pas d'appeler une sous-routine et n'a donc pas besoin d'enregistrer le
$ra
. Pile manipulations serait également nécessaire dans la sous-routine, si elle devait utiliser un$s
s'inscrire comme le MIPS convention d'appel précise ces de l'appelant enregistré.Vous devez stocker la valeur de la
$ra
quelque part, quand vous appeler un sous-programme commejal
remplace.Cela peut être fait en utilisant un$s
registre, mais je viens de démonstration de la méthode générale pour sauver$ra
sur la pile avec la manipulation de l'$sp
et$fp
.Ok, donc pourquoi pas en utilisant uniquement des sp? Pourquoi utilisez-vous également fp?
À l'aide de
$fp
, le pointeur de l'image, permet dynamique de l'allocation sur la pile à l'intérieur de la fonction. J'ai entendu dire que$fp
est rarement utilisé dans les écrits à la main de l'assemblée, et vous êtes bien entendu libre de le laisser dehors -- il n'est pas nécessaire dans cet exemple.Ok super, merci!!!!
OriginalL'auteur Konrad Lindenbach