Utilisation de la FPU

Résolu
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 17 août 2004 à 14:15
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 3 sept. 2004 à 17:31
J'essaie d'utiliser la FPU pour faire ne serait-ce qu'une fonction très simple, qui revoie l'argument qu'on lui passe:

__declspec(naked) float __fastcall fct(float f)
{
// renvoie f
}

Je n'arrive pas du tout à démarrer, et le listing de vs ne m'aide pas vraiment.
Merci de m'aider

7 réponses

CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 1
3 sept. 2004 à 00:47
En principe cela devrait fonctionner

#include <stdio.h>

float __stdcall Racine(float f)
{
float res;

__asm
{
finit
fld f
fsqrt
fst res
}

return res;
}

int main()
{
printf("%f\r\n", Racine((float)100.0));
return 0;
}

Core Breaker :)
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 août 2004 à 15:46
Tu devrais avoir argument dans ECX:

push ecx
fld dword ptr[esp]
fwait
add esp, 4
ret 0

l'appelant trouvera sa valeur en ST(0)

ciao...
BruNews, Admin CS, MVP Visual C++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
17 août 2004 à 16:27
Bah justement non, ecx contient 0, je vais faire en _stdcall:
__declspec(naked) float __stdcall Racine(float f)
{
__asm
{
fld dword ptr[esp + 4]
fwait
ret 4
}
}
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 août 2004 à 16:31
Alors va voir ce qu'a maquille le compilo. Peut etre a-t-il deja place en fpu.

ciao...
BruNews, Admin CS, MVP Visual C++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
17 août 2004 à 16:46
on dirait pas: si je mets que ret 4, il me renvoie n'importe quoi (-1.#IND00)
0
ToutEnMasm Messages postés 587 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 13 décembre 2022 3
20 août 2004 à 23:06
Salut,
le langage doit être du javanais ou quelque chose de pas fréquentable pour obliger a compter les paramètres locaux mis en pile.
ToutEnMasm
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
3 sept. 2004 à 17:31
en effet
0
Rejoignez-nous