bits 32
- section .text
+ section .text USE32
; eax: vertex ptr, edx: matrix ptr
global g3d_xform_
g3d_xform_:
push ebp
mov ebp, esp
- sub esp, 8
+ sub esp, 12
push ebx
push esi
push edi
%macro MULROW 0
mov eax, [edi] ; eax <- X
imul dword [ebx]
+ shrd eax, edx, 16
mov ecx, eax
mov eax, [edi + 4] ; eax <- Y
imul dword [ebx + 4]
+ shrd eax, edx, 16
add ecx, eax
mov eax, [edi + 8] ; eax <- Z
imul dword [ebx + 8]
+ shrd eax, edx, 16
add ecx, eax
mov eax, [edi + 12] ; eax <- W
imul dword [ebx + 12]
+ shrd eax, edx, 16
add eax, ecx
%endmacro
MULROW
mov [edi + 12], eax ; move W into place
; move XYZ into place
- mov esi, [ebp - 12]
+ lea esi, [ebp - 12]
movsd
movsd
movsd
mov esp, ebp
pop ebp
ret
+
+; vi:ft=nasm ts=8 sts=8 sw=8: