Показать сообщение отдельно
Старый 28.11.2011, 18:14   #34
Платон Александрович
Нуждающийся
 
Аватар для Платон Александрович
 
Регистрация: 05.10.2011
Адрес: Россия, Южно-Сахалинск
Сообщений: 66
Написано 42 полезных сообщений
(для 83 пользователей)
Ответ: Великая битва 4х языков программирования на простейшей задачке

Сообщение от 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'
Вложения
Тип файла: zip test.zip (1.2 Кб, 390 просмотров)
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Платон Александрович за это полезное сообщение:
HolyDel (28.11.2011), Reks888 (28.11.2011)