Вот к стати, с успешно скомпиленного примера по ммх--единственное, какой-то урод там всесто d1 необявленную переменную d2 использовать пытался--достаточно было вернуть на d1 |D
Опции--Options-->Compiler-->Assembler Tab-->List Options [x], Assembler Output =Use Masm. Дальше выбираешь просто компилировать
.386p
DGROUP GROUP _BSS,_DATA
ASSUME CS:_CODE,ES:DGROUP,DS:DGROUP,SS:DGROUP
EXTRN MMX_EMMS: NEAR
EXTRN FPC_DO_EXIT: NEAR
EXTRN THREADVARLIST_CPU: NEAR
EXTRN FPC_INITIALIZEUNITS: NEAR
EXTRN INIT$_SYSTEM: NEAR
EXTRN FINALIZE$_SYSTEM: NEAR
EXTRN INIT$_OBJPAS: NEAR
EXTRN FINALIZE$_OBJPAS: NEAR
EXTRN INIT$_MMX: NEAR
EXTRN THREADVARLIST_OBJPAS: NEAR
EXTRN THREADVARLIST_MMX: NEAR
EXTRN THREADVARLIST_SYSTEM: NEAR
_CODE SEGMENT PARA PUBLIC USE32 'CODE'
_CODE ENDS
_CODE SEGMENT PARA PUBLIC USE32 'CODE'
ALIGN 4
ALIGN 4
; [testmmx.pas]
; [7] begin
PUBLIC PASCALMAIN
PASCALMAIN:
PUBLIC _main
_main:
; Temps allocated between ebp+0 and ebp+0
push ebp
mov ebp,esp
call FPC_INITIALIZEUNITS
; [8] d1:=1.0;
fld1
fstp qword ptr [U_P$TESTMMX_D1]
fwait
; [11] for i:=0 to 10000 do
mov dword ptr [U_P$TESTMMX_I],0
dec dword ptr [U_P$TESTMMX_I]
ALIGN 4
@@8:
inc dword ptr [U_P$TESTMMX_I]
; [12] a[i]:=d1; { this is done with 64 bit moves }
mov edx,dword ptr [U_P$TESTMMX_I]
mov eax,dword ptr [U_P$TESTMMX_D1]
mov dword ptr [U_P$TESTMMX_A+edx*8],eax
mov eax,dword ptr [U_P$TESTMMX_D1+4]
mov dword ptr [U_P$TESTMMX_A+edx*8+4],eax
cmp dword ptr [U_P$TESTMMX_I],10000
jl @@8
; [14] emms; { clear fpu }
call MMX_EMMS
; [16] end.
call FPC_DO_EXIT
leave
ret
ALIGN 4
_CODE ENDS
_DATA SEGMENT PARA PUBLIC USE32 'DATA'
DB "FPC 2.0.0 [2005/05/08] for i386 - Win32"
ALIGN 4
ALIGN 4
PUBLIC THREADVARLIST_P$TESTMMX
THREADVARLIST_P$TESTMMX:
DD 0
ALIGN 4
PUBLIC FPC_THREADVARTABLES
FPC_THREADVARTABLES DD 5
DD THREADVARLIST_SYSTEM,THREADVARLIST_OBJPAS,THREADVARLIST_CPU,THREADVARLIST_MMX,THREADVARLIST_P$TESTMMX
ALIGN 4
PUBLIC FPC_RESOURCESTRINGTABLES
FPC_RESOURCESTRINGTABLES DD 0
ALIGN 4
PUBLIC INITFINAL
INITFINAL DD 3,0
DD INIT$_SYSTEM,FINALIZE$_SYSTEM,INIT$_OBJPAS,FINALIZE$_OBJPAS,INIT$_MMX,0
ALIGN 4
PUBLIC __stklen
__stklen DD 131072
PUBLIC __heapsize
__heapsize DD 2097152
_DATA ENDS
_DATA SEGMENT PARA PUBLIC USE32 'DATA'
_DATA ENDS
_DATA SEGMENT PARA PUBLIC USE32 'DATA'
_DATA ENDS
_BSS SEGMENT PARA PUBLIC USE32 'BSS'
_BSS ENDS
_BSS SEGMENT PARA PUBLIC USE32 'BSS'
ALIGN 4
U_P$TESTMMX_D1 DB 8 DUP(?)
_BSS ENDS
_BSS SEGMENT PARA PUBLIC USE32 'BSS'
ALIGN 4
U_P$TESTMMX_A DB 80008 DUP(?)
_BSS ENDS
_BSS SEGMENT PARA PUBLIC USE32 'BSS'
ALIGN 4
U_P$TESTMMX_I DB 4 DUP(?)
END