Arguments pour fonction naked

Résolu
Signaler
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
-
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
Quand on crée un fonction naked, si j'ai bien compris les arguments sont passés par registre. Comment fait on alors pour savoir ou est quoi, et que se passe-il quand il y a beaucoup d'arguments (plus de 4)?
Merci.

3 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
en __cdecl, tous les params sont PUSHes sur stack, c'est la situation 'normale'.
Ensuite entre en jeu l'optimisation suivant les reglages et la valeur du compilo. Certain que VS 2003 passera tout ce qu'il peut en registre si on a regle sur vitesse maxi et qu'il a calcule qu'il y aura benef. Malgre tout, il ne changera jamais la forme ni le mode des params d'une func naked.

ciao...
BruNews, Admin CS, MVP Visual C++ va
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
NENNI, naked est la pour informer le compilo qu'il n'a pas le droit d'y toucher, rien de plus. Ce qui va exclure de fait toutes les instructions C/C++, 'return' comme quoi que ce soit d'autre.
Pour resumer, func doit etre entiere en VRAI asm.

Le mode de passage des params est regle par le mode de compilation dans les options du projet sinon par '__stdcall' ou '__fastcall' devant le nom de la fonction. Ces declarateurs sont prioritaires sur les options projet.

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
Pourquoi des fois ils sont déja dans les registres? ces en __cdecl?