![]() |
Studna > ╚lßnky > Runtime Error at ... > RTE 00:04 |
![]()
Runtime Error at 00:04 aneb Linkovßnφ
Tato Φßst serißlu bude trochu jinß. Po n∞kolika dφlech, ve kter²ch Ülo o to, jak co ud∞lat, je tento dφl zam∞°en na praktickΘ u₧itφ jednΘ mo₧nosti kompilßtoru paskalu a myslym ₧e i cΘΦka.
Dφval jsem se na dema, kterß vyhrßvajφ mezinßrodnφ sout∞₧e, nap°. Assembly, Gathering a dalÜφ. Jednß se nap°φklad o Second Reality od Future Crew, Crystal Dreams od Tritonu, n∞kolik dem od Juice a dßle o 64kb dema od r∙zn²ch autor∙. V∞tÜina 64kb dem je programovanß v pascalu a kompilovßna v BP7 a tvo°φ je jen jedin² soubor, pop°. n∞kolik textov²ch soubor∙ o teamu a demu a tzv. bbs-intra. Jeliko₧ demo je jen jedin² soubor, musφ v n∞m b²t grafika, hudba, texty a program. VÜe je pak zapakovßno v∞tÜinou PKLitem, LZExem nebo UCExem.
Jak dosßhnout jednoho souboru. Binßrnφ soubor p°evedeme do .obj fajlu pomocφ programu binobj, kter² je v instalaci BP. To se ud∞lß takto:
binobj vstupnφ_jmeno jmeno_obj_fajlu jmeno_procedurykde vstupni_jmeno a jmeno_obj_fajlu jsou jmΘna soubor∙ a jmeno_proceduty je jmΘno, kter²m se na nßÜ obj fajl budeme odvolßvat.
Vytvo°en² obj fajl pou₧ijeme ve zdrojßku nap°. takto:
procedure obrazek; external; {$l soubor.obj}pokud se nßÜ obj fajl jmenuje soubor a jmΘno procedury je obrazek.
Na takto p°ilinkovanou proceduru se odkazujeme pomocφ ukazatel∙. To se d∞lß velice jednoduÜe syntaxφ @obrazek a podobn∞. V podstat∞ se tφm nahradφ pou₧itφ p°φkaz∙ blockread, getmem a freemem, kterΘ Φasto fungujφ Üpatn∞.
Takto se dß jednoduÜe nalinkovat do exßΦe sampl, obrßzek, font, texty a dalÜφ blb∙stky a nemusφme mφt strach, aby byl rozÜi°ovßn cel² program bez chyb∞jφcφch soubor∙. M²m snem jsou toti₧ programy, kterΘ tvo°φ jeden exßΦ, jeden datov² soubor, textov² soubor readme a n∞kolik soubor∙ s u₧ivatelsk²mi daty pop°. ulo₧en²mi pozicemi u her.
Pokud vyu₧φvßme linkovßnφ a₧ p°φliÜ mnoho, narazφme na omezenφ kompilßtoru, kter² nahlßsi chybu, proto₧e code segment je delÜφ ne₧ 64kb (nebo n∞co okolo). To se dß vy°eÜit pomocφ chyt°e vymyÜlenych unit∙, do kter²ch proced∙ry "rozstrkßme".
P°φklad dneska nebude, kochejte se m²mi demßΦi a Φekejte na gamesu od No!fUtuRe.
Pozn. °ekl bych, ₧e systΘm linkovßnφ byl vymyÜlen hlavn∞ pro linkovßnφ obj fajl∙ z TASM nebo C/C++. Ale jak vidφm, dß se s tφm d∞lat docela dost v∞cφ a je to hodn∞ rychl², proto₧e je vÜe v pam∞ti. KoneΦn² exefajl DOPORU╚UJI zkomprimovat PKLItem, UCExem nebo jin²m dalÜφm exepackerem.
To¥ vÜe pro dneÜek.
kontakt: jislp@feld.cvut.cz http http://cs.felk.cvut.cz/~jislp/ irc kanßly #cs, #cz, #cesi; nick xpj
[ Zp∞t nahoru ]
Copyright © 1997, 1998 Pavel Jisl, jislp@feld.cvut.cz