Сообщение от HolyDel
и намного ты быстрее напишешь, чем cl.exe нагенерит?
; 23 : ++counter;
inc esi
; 24 : map[512 * 128 * x + 128 * y + z] = counter;
mov DWORD PTR [eax], esi
add eax, 4
dec ecx
jne SHORT $LL3@main
|
какое-то двусмысленное выражение
если написать в смысле напечатать, то быстрее не смогу
, а если написать код который был бы быстрее, то вот
раза в два быстрее *trollface*
mov eax, 1
@@:
movnti dword [ebp], eax
add ebp, 4
inc eax
test eax, 512 * 128 * 512 - 1
jnz @b
диалект fasm
ЗЫ
полный сырок
format PE console
entry start
include 'macro/import32.inc'
include 'macro/proc32.inc'
section '.data' data readable writeable
text_alloc db 'allocation time %d ms', 13, 10, 0
text_fill db 'fill time %d ms', 13, 10, 0
section 'code' code readable executable
start:
stdcall [timeBeginPeriod], 1
stdcall [timeGetTime]
mov [esp+4], eax
stdcall [GetProcessHeap]
stdcall [HeapAlloc], eax, 0, 512 * 128 * 512 * 4
mov ebp, eax
stdcall [timeGetTime]
mov [esp+8], eax
mov eax, 1
@@:
movnti dword [ebp], eax
add ebp, 4
inc eax
test eax, 512 * 128 * 512 - 1
jnz @b
stdcall [timeGetTime]
mov [esp+12], eax
stdcall [timeEndPeriod], 1
mov eax, [esp+8]
sub eax, [esp+4]
ccall [printf], text_alloc, eax
mov eax, [esp+12]
sub eax, [esp+8]
ccall [printf], text_fill, eax
stdcall [ExitProcess], 0
section 'idata' import data readable
library\
kernel32, 'kernel32.dll',\
winmm, 'winmm.dll',\
msvcrt, 'msvcrt.dll'
import kernel32,\
GetProcessHeap, 'GetProcessHeap',\
HeapAlloc, 'HeapAlloc',\
ExitProcess, 'ExitProcess',\
GetTickCount, 'GetTickCount'
import winmm,\
timeBeginPeriod, 'timeBeginPeriod',\
timeGetTime, 'timeGetTime',\
timeEndPeriod, 'timeEndPeriod'
import msvcrt,\
printf, 'printf'