Tu as regardé la doc de l'assembleur inline ? Il y a des exemples d'utilisation de variables / fonctions C/C++ dans le code ASM, normalement...
J'ai trouvé sur internet pas mal d'exemples SSE en assembleur, mais aucun qui ressemble à ce que je voudrais faire.
Dans l'ensemble, ca se borne à implémenter des fonctions prenant des pointeurs d'entrées et des pointeurs de sorties.
Je ne sais toujours pas utiliser une variable locale en assembleur.
Ce code ne compile pas: (error: __asm 'mulps' syntax error: variable reference)
1 2 3
| __m128 x=_m_set_ps1(10);
__m128 y=_m_set_ps1(20);
__asm mulps x y |
Et je vois encore moins quelle valeur de pointeur donner en deuxième opérande pour le chargement de constante. J'ai l'impression que le compilo se crée une table de constantes, ce qui lui permet d'écrire des chose du genre.
mulps xmm0,xmmword ptr [KERNEL32_NULL_THUNK_DATA+90h (44C220h)] // xmm0=xmm0*10
PS: J'arrive en partie à mes fins en utilisant une constante et son opposé, puis en échangeant les signes + et - dans les calculs. Le compilo est bluffé. mais le code C++ est moche...
Partager