Article View: pl.comp.lang.asm
Article #200Ciąg Fibonacciego w czasie kompilacji
From: Bogdan (bogdro)
Date: Mon, 17 Apr 2006 16:53
Date: Mon, 17 Apr 2006 16:53
67 lines
2499 bytes
2499 bytes
Tak się tym kiedyś chwalili programiści C++, że im kompilator
generuje potrzebne liczby ciągu Fibonacciego w czasie kompilacji. Ale
my nie jesteśmy gorsi :) Odkrywając ostatnio możliwości FASMa,
napisałem makro właśnie generujące liczby Fibonacciego w czasie
kompilacji. Oto ono z przykładami użycia (deklaracje oraz w instrukcjach):
macro fibon oper, dst1, dst2, n
{
if n = 1 | n = 2
H = 1
else if n > 0
F = 1
G = 1
H = F + G
if n > 3
repeat n-3
F = G
G = H
H = F + G
end repeat
end if
else
H = 0
end if
if `oper in <"db","dw","dd","dp","dq","dt","rb","rw","rd","rp","rq","rt">
oper H
else
if dst2 eq
oper dst1, H
else
oper dst1, dst2, H
end if
end if
}
fibon db,,, -1
fibon db,,, 1
fibon db,,, 2
fibon db,,, 3
fibon db,,, 4
fibon db,,, 5
fibon db,,, 6
fibon db,,, 7
fibon mov, ax,, 5
fibon shld, edx, eax, 6
(nawiasy ostre miały być w jednej linijce z if). Sprawdzone disasmem:
$ ndisasm ~/Asm/fasm/mac_fibon.bin
00000000 0001 add [bx+di],al
00000002 0102 add [bp+si],ax
00000004 0305 add ax,[di]
00000006 080D or [di],cl
00000008 B80500 mov ax,0x5
0000000B 660FA4C208 shld edx,eax,0x8
To i inne ciekawe makra wrzuciłem tutaj:
http://flatassembler.decard.net/viewtopic.php?t=20
--
Pozdrawiam, Bogdan (Linux i FreeDOS)
Kurs assemblera x86 (DOS i Linuks): http://rudy.mif.pg.gda.pl/~bogdro
Grupy dyskusyjne o asm: pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
Prawdziwy, bezpieczny komunikator: www.JabberPL.org
Technical Details
Message-ID:
<e20h94$g45$1@nemesis.news.tpi.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!newsfeed.silweb.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!newsfeed.silweb.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail From: "Bogdan (bogdro)" <bogdan@bogdan.pl> Newsgroups: pl.comp.lang.asm Subject: Ciąg Fibonacciego w czasie kompilacji Date: Mon, 17 Apr 2006 18:53:05 +0200 Organization: tp.internet - http://www.tpi.pl/ Lines: 67 Message-ID: <e20h94$g45$1@nemesis.news.tpi.pl> NNTP-Posting-Host: acty132.neoplus.adsl.tpnet.pl Mime-Version: 1.0 X-Trace: nemesis.news.tpi.pl 1145292901 16517 83.11.78.132 (17 Apr 2006 16:55:01 GMT) X-Complaints-To: usenet@tpi.pl NNTP-Posting-Date: Mon, 17 Apr 2006 16:55:01 +0000 (UTC) User-Agent: Thunderbird 1.5 (X11/20051201) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit