La valeur de retour toujours aller dans le registre eax après un appel de méthode?

J'ai écrit un accrochage de la bibliothèque, qui examine un exécutables PE dll table d'importation, afin de créer une bibliothèque qui permet de changer des paramètres et valeurs de retour. J'ai quelques questions sur la façon dont la valeur de retour est transmise à partir d'une fonction.

J'ai appris que la valeur de retour d'une fonction est enregistré dans le registre accumulateur. Est-ce toujours le cas? Si non, comment le compilateur de savoir où chercher pour le résultat de la fonction?

Ce que le type de retour de la taille? Un nombre entier s'adapter facilement, mais qu'une structure plus grande? L'appelant réserve de la pile de l'espace, donc la méthode qu'il appelle pouvait écrire le résultat sur la pile?

Pourquoi ne pas dresser un couple d'exemples et de voir par vous-même?
Non, le processeur ARM7 ne dispose pas d'un registre EAX. Ni faire d'autres processeurs.
Évidemment, si le type de retour ne rentre pas dans eax, il ne peut pas être en elle. Reportez-vous à la documentation de ce convention d'appel vous êtes en utilisant.
Bottom line: il dépend entièrement le compilateur et les conventions qu'il utilise. (Je construire un compilateur qui passe double float args EAX/EDX [parfois]).
pas si vos méthodes de retour void et de transmettre des valeurs à travers des références ou des pointeurs.

OriginalL'auteur Bartlomiej Lewandowski | 2014-01-17