2013-06-25 3 views
1

J'apprends l'assemblage PPC mais j'ai de la difficulté à comprendre ce qui suit à propos des appels de sous-routine:PowerPC Assembly: Comment passer et renvoyer plusieurs arguments?

Quels registres peuvent être utilisés pour transmettre des arguments à une sous-routine? Je pense que c'est R3 à R12? Comment passez-vous les arguments lorsque vous êtes à court de registres? Pourrais-je voir s'il vous plaît un exemple de code de ceci.

Lorsque vous renvoyez des valeurs de retour, pouvez-vous utiliser uniquement R3? D'après ce que je comprends, vous pouvez seulement utiliser ce registre pour retourner une seule valeur. Si vous devez renvoyer plus de valeurs, vous renvoyez un pointeur vers ces valeurs? Pourrais-je voir un exemple de code pour cela aussi.

Répondre

2

Si vous écrivez en langage assembleur, vous pouvez faire ce que vous voulez. C'est seulement quand vous voulez interagir avec un code externe (peut-être une bibliothèque, peut-être un appel système) que vous devez obéir à la convention d'appel. Certaines architectures ont plusieurs ABI différents, vous devez donc être prudent. Si je me souviens bien, tout le monde utilise la même convention d'appel pour PowerPC 32 bits, donc this Apple reference devrait avoir tout ce que vous devez savoir. Comme vous le mentionnez, les paramètres sont couramment transmis dans R3-R10 et la valeur de retour est mise dans R3. This tutorial semble indiquer la même chose.

Questions connexes