Patrzę dziś z łezką w oku na kod, który napisałem w Pascalu na początku 1998. roku (czyli gdzieś w pierwszej klasie ogólniaka):
procedure putpixel(x,y:word;color:word); assembler; asm mov cx,640*2 mov bx,x cmp bx,639 ja @noput mov ax,y cmp ax,479 ja @noput add ax,topscreeny mul cx shl bx,1 add ax,bx adc dx,0 mov si,ax cmp dl,curbank je @bankok call dword ptr bankswitch mov curbank,dl @bankok: push $a000 pop es mov ax,color mov es:[si],ax @noput: end;
I śmiać mi się chce, kiedy w oknie obok widzę kod, który dziś mam po kimś poprawiać:
for ($i = 0, $j = 0; ; )
{
$tab[$i++] = $title[$j];
$tab[$i++] = $content[$j++];
if ($j >= $limit)
break;
}
Nie wiedziałem, że czas procesora jest aż tak cenny w zagnieżdżanych językach skryptowych. Pół biedy z tym, ale widziałem już takie krzaki na ekranie, że sam autor by mi dziś nie powiedział, co kod robi bez pomocy debugowania.

Najlepsze jaja, z tego co słyszałem są we flashu. Znajomy ostatnio sporo pisze w tym czymś, to się nasłuchałem.
Jak wiadomo przy graficę 3D sporo się wykonuje funkcji trygonometrycznych. Jeśli trzeba je wykonać wielokrotnie, to warto sobie poszczególne wyniki tablicować i potem się odwoływać do tablicy. Otóż okazuje się, że odwołanie się do elementu tablicy jest we flashu wolniejsze, niż wywołanie funkcji trygonometrycznej z zewnętrznej biblioteki.
Ponoć cały flash jest naszpikowany takimi motywami.
Moja funkcja była znacznie bardziej WTF
[snip]
les di,G_Buf
add di,&CX
mov ax,CY
shl ax,6
add di,ax
shl ax,2
add di,ax
mov ax,G_Color
mov es:[di],al
[snip]
Potem już tylko wystarczy wrzucić bufor do karty (z obsługą synchronizacji pionowej)
cmp G_VSync,0
je @@3
@@1:
mov dx,03dah
in al,dx
test al,8
jne @@1
@@2:
in al,dx
test al,8
je @@2
@@3:
push ds
mov ax,0a000h
mov es,ax
xor di,di
lds si,G_Buf
mov cx,(MAX_BUF_SIZE / 4)
cld
db 66h
rep movsw
pop ds
:)
Hmm, twoja funkcja działa tylko dla 320×200x256 :P
U siebie też jakiś miesiąc później zamieniłem mnożenie na przesunięcia bitowe i składanie. Tylko, że nie chodzi tu o najładniejszą funkcję do rysowania pikselami po ekranie. Chodzi o to, że to już nie te czasy, kiedy się pisało wstawki w assemblerze.
To była biblioteka do gry, którą kiedyś pisałem pod DOS-em. Co ciekawe można tą grę kupić na Allegro razem z GIMPem, Firefoxem, OpenOffice i innymi otwartymi programami :D
W tym roku czeka mnie poznawanie assemblera (przedmiot Sterowanie Eksperymentem Fizycznym)… już się cieszę na samą myśl ;]