2017-04-04 4 views
1

MIPS d'apprentissage Im donc je writed programme simple c et généré assemblage MIPS avec gcc et dans le côté il y a cette partieQu'est-ce que "% salut (__ gnu_local_gp)" signifie en MIPS assebmly

lui $28,%hi(__gnu_local_gp) 
addiu $28,$28,%lo(__gnu_local_gp) 

Je sais que des moyens de Lui charge supérieure immédiate mais je ne sais pas ce que %hi(__gnu_local_gp) et %lo(__gnu_local_gp) signifie, addiu signifie ajouter immédit non signé. sont lo et salut les registres si oui, quel% signifie?

+0

Cette instruction écrit simplement les mots inférieurs et supérieurs de la constante gnu_local_gp dans le registre immédiat. – user3811082

Répondre

0

Les instructions chargent l'adresse du symbole __gnu_local_gp dans le registre 28. __gnu_local_gp est un emplacement de mémoire qui est utilisé pour stocker les Global Pointer, et enregistrer 28 est généralement utilisé pour maintenir le pointeur global. '% Hi' et '% lo' sont des fonctions intégrées de l'assembleur GNU et n'ont rien à voir avec les registres hi et lo de l'architecture MIPS.