andei vendo como éssa coisa toda funciona
adição subtração multiplicação de vetores foi tranquilo
ai pensei bom vamos começar a ver como eu vou fazer com a minhas
matrizes ai
fiz o seguinte teste
typedef struct
{
float x;
float y;
float z;
float w;
}vec4f;
vec4f addvec(vec4f &a,vec4f &b)
{
vec4f v;
__asm
{
MOV EAX, a
MOV EBX, b
MOVUPS XMM0, [EAX]
MOVUPS XMM1, [EBX]
ADDPS XMM0, XMM1
MOVUPS [v], XMM0
}
return v;
}
vec4f subvec(vec4f &a, vec4f &b)
{
vec4f v;
__asm
{
MOV EAX, a;
MOV EBX, b;
MOVUPS XMM0, [EAX]
MOVUPS XMM1, [EBX]
SUBPS XMM0, XMM1
MOVUPS [v], XMM0
}
return v;
}
vec4f mulvec(vec4f &a,vec4f &b)
{
vec4f v;
__asm
{
MOV EAX, a
MOV EBX, b
MOVUPS XMM0, [EAX]
MOVUPS XMM1, [EBX]
MULPS XMM0, XMM1
MOVUPS [v], XMM0
};
return v;
}
vec4f testX(float *matrix)
{
vec4f v;
__asm{
MOV EAX, matrix
MOVUPS XMM0, [EAX]
MOVUPS [v], XMM0
};
return v;
}
vec4f testY(float *matrix)
{
vec4f v;
__asm{
MOV EDX, matrix
MOVUPS XMM0, [EDX+0x10]
MOVUPS [v], XMM0
};
return v;
}
vec4f testZ(float *matrix)
{
vec4f v;
__asm{
MOV EDX, matrix
MOVUPS XMM0, [EDX+0x20]
MOVUPS [v], XMM0
};
return v;
}
vec4f testW(float *matrix)
{
vec4f v;
__asm{
MOV EDX, matrix
MOVUPS XMM0, [EDX+0x30]
MOVUPS [v], XMM0
};
return v;
}
int _tmain(int argc, _TCHAR* argv[])
{
float matrix[16] = {1.0f,0,0,0,
0,1.0f,0,0,
0,0,1.0f,0,
0,0,0,1.0f};
vec4f v1,v2,v3,v4;
v1 = testX(matrix);
v2 = testY(matrix);
v3 = testZ(matrix);
v4 = testW(matrix);
}
v1 = {1.0f,0.0f,0.0f,0.0f};
v2 = {0.0f,1.0f,0.0f,0.0f};
v3 = {0.0f,0.0f,1.0f,0.0f};
v4 = {0.0f,0.0f,0.0f,1.0f};
isso foi só um teste pra ver como funciona, agora vou fazer as
multiplicações de matrizes e tals,
vi um script em perl que converte nasm p/ c inline, ai com makefiles
config.h e um arquivo pro GCC e outro VC++
minha vida fica resolvida.
tenho um código de rasterização 3D em C puro, vou ver c migro o mesmo.
mais bom obrigado pela ajuda.
ps: é má idéia postar o progresso pode ser que ajude mais alguém.
On 19 jun, 13:25, Ziviani <
jrzivi...@gmail.com> wrote:
> Se a sintaxe AT&T te incomoda você pode usar a seguinte diretiva pra usar
> sintaxe Intel. É útil se você já tem experiência com Nasm e afins, mas não
> sei se tem alguma restrição fazendo isso. Vale uma pesquisada.
>
> __asm__(".intel_syntax noprefix");
>
>
http://stackoverflow.com/questions/549347/how-to-use-address-constant...
>
> 2009/6/19 gabriel <
newbie....@gmail.com>