Utilisation de la FPU [Résolu]

Signaler
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
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

Messages postés
540
Date d'inscription
dimanche 23 mars 2003
Statut
Membre
Dernière intervention
5 octobre 2007
1
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 :)
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
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++
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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
}
}
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
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++
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
on dirait pas: si je mets que ret 4, il me renvoie n'importe quoi (-1.#IND00)
Messages postés
570
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
18 janvier 2021
2
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
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
en effet