Pointeur / macro / SSE

Pour discuter de l'assembleur
Anonyme

Pointeur / macro / SSE

Message par Anonyme »

Le titre de mon topic , n'est pas explicite , mais il contient les mots clé essentiel pour la fonction "recherche"

Bref, j'ai trouvé comment commencer sérieusement en ASM.
l'optimisation des routines 3D matrice & vecteur avec les instructions SSE des x86.

mais je galère avec la syntaxe. ce qui me provoque des erreurs
ici un IMA :

Code : Tout sélectionner

Structure Vector3
	x.f
	y.f
	z.f
EndStructure


Macro SSE_Vector_normalize(vector)
    !mov	eax,	dword[v_#vector]
 		!movaps	xmm0,	[eax]
 		!movaps	xmm2,	xmm0
 	  !mulps	xmm0,	xmm0
		!movaps	xmm1,	xmm0
		!shufps	xmm0,	xmm0,	147
		!addps	xmm1,	xmm0
		!movaps	xmm0,	xmm1
		!shufps	xmm1,	xmm1,	78
		!addps	xmm0,	xmm1
		!rsqrtps	xmm0,	xmm0
		!mulps	xmm0,	xmm2
		!movaps	[eax],	xmm0
EndMacro

A.Vector3
A\x = 10
A\y = 10
A\z = 10


SSE_Vector_normalize(A)

D'apres ce que j'ai compris , les éléments du vecteurs doivent être aligné en mémoire , c'est le cas pourtant.

si je fait

Code : Tout sélectionner

Dim A(2)
A(0)=10
A(1)=10
A(2)=10
Ptr = @A()
SSE_Vector_normalize(Ptr)
sa marche , mais rien n'est normalizé ^^

Voici d'autres questions :

pour une procedure du style :

Code : Tout sélectionner

procedure A(*V.Vector3)
Comment je peut mettre l'adresse de *V dans un registre ?
j'ai des "undefined symbol"
j'ai essayer ceci

Code : Tout sélectionner

v_V
p_V
p.v_V
etc...
rien ne marche.


Merci d'avance.
tonton
Messages : 315
Inscription : mar. 26/avr./2005 15:19

Message par tonton »

!movaps xmm0, [eax] !! >>>> !movss xmm0, [eax]; , pour un double seulement.

Fais gaffe avec les "movaps" avec accé memoire, il faut que ce soit aligné 128 sinon ca plante.
movups, lui passe meme sans alignement...

!movaps [eax], xmm0 , pas bon non plus, faut savoir quelle partie
128 tu veux metre dans eax....
tonton
Messages : 315
Inscription : mar. 26/avr./2005 15:19

Message par tonton »

oups!! je vois mieux ce que tu veux faire
suffis d un peu de basic pour que je me perde
bref ! ca m a l' air correct .
moi! je ne met pas une ligne basic :lol:

Quelle formule tu veux convertir que j assaye a ma façon?
Anonyme

Message par Anonyme »

en fait , je voudrais des routines SSE pour le calcul de vecteurs et de matrices :D
Répondre