home *** CD-ROM | disk | FTP | other *** search
-
-
-
- **** FLINKER ****
-
- V 3.2
-
- An even faster PD-linker for GST format files
-
- by Gottfried Ira Vienna, 12 Dec 89
-
- ( Based upon a program developed by Ingo Eichenseher )
- ( as published in "ST Computer" 3/88 )
-
-
- German text first, as I prefer my mother tongue ...
-
-
- I) Allgemeines Blabla
-
- Nachdem ich endlich das Listing aus ST-Computer 3/88 abgetippt
- (Adler-Suchsystem!!!) hatte und infolge etlicher Tippfehler gezwungen war,
- den Programmtext näher zu betrachten, reifte dann die Erkenntnis ( wie
- immer, wenn man fremde Programme studiert! ), daß es da etliches zu
- verbessern gäbe. In den folgenden Monaten, jeweils so zwischen Nachtmahl
- und Schlafengehen, fand sich ein Bug da, eine Inkonsistenz dort, und
- mehrere geopferte Wochenenden brachten größere Straffungen im Code.
- Das Ergebnis finde ich recht brauchbar, ...vielleicht Du auch ?!
- Das leitet über zu den
-
-
- II) Verbesserungen/Änderungen
- gegenüber Ingos Original.
-
- 1. und wichtigstens: SPEEEEEEEED!!!
- bei großen Programmen (>100kB) etwa 2mal flinker und
- somit mehr als 6mal flinker als GST-Link!
-
- 2. BSS (UDATA) frißt beim Linken keinen Speicherplatz mehr.
- Wem es Spaß macht, kann nun (leere) Gigabytes in die BSS stopfen.
-
- 3. '-WITH', '-LIST' und '-PROG' verwenden 'LNK', 'MAP' und 'PRG' als
- Default-Extension.
-
- 4. 'Data'-Befehl in der Steuerdatei erlaubt (wie GST-Link).
- Syntax:
- DATA <dezimalzahl>[K]
- Groß/Kleinschreibung ist unerheblich.
- 'K', falls vorhanden, multipliziert <value> mit 1024.
-
- 5. Prospero-Fortran-Kompilate lassen sich nun linken;
- dazu waren ua. die Punkte 6 (?!?!?!?!) und 7 nötig.
- ( Nur mit Option '-NOSEC' !! )
-
- 6. 'XREF' an ungeraden Adressen zulässig.
-
- 7. Behandlung von Common-Sections nun korrekt (ein frommer Wunsch...).
-
- 8. 'Chunks', die gemeinsam eine 'Subsection' ausmachen liegen jetzt
- dicht an dicht, ohne Füll-Bytes (wie GST-Link).
-
- 9. Option '-BUF 0' ist gültig. Allerdings werden dann die LIBRARYs
- nicht mehr durchsucht, sondern im Ganzen dazugelinkt!
- ( Ist also in der Auswirkung ident zur Ersetzung aller
- LIBRARYs durch INPUTs.)
-
- 10. Unauffindbare '.BIN'-Dateien brechen den Linkvorgang nicht
- mehr ab.
-
- 11. Assemblierung einiger zeitkritischer Routinen (was ua. für
- Punkt 1 verantwortlich ist) und ... und ... und ...
-
-
- III) Und das war's auch schon.
-
- Falls Du, geneigter Anwender, Dich genauso schlau fühlst wie zuvor, sei
- die Lektüre des Artikels aus 'ST-Computer' 3/88 ans Herz gelegt, dessen
- Kenntnis ich hier voraussetze. Ich bin ein lausig langsamer Tippsler und
- und verbringe meine Nächte lieber mit anregenderen Dingen ( zB FLINKER
- weiterzuentwickeln oder einen Code-Optimierer für Lattice-C... ) als
- Abschreiben von Artikeln. Ansonsten einfach LINKER durch FLINKER ersetzen
- und alles läuft wie gehabt, nur schneller.
-
- Flüche, Wehklagen, Aufmunterungen, Liebeserklärungen uä. mehr an
- Gottfried Ira
- Peilgasse 51/19
- A-1080 Wien
-
- Es geht auch über Roberts Anschluß an E359205@AWITUW01.BITNET
- E359205@AWITUW01.UNA.AT
- MESSAROS@EUEV88.BITNET
- MESSAROS@EUEV88.UNA.AT
-
- PS. Wie üblich entzieht sich der Programmierer jeder Verantwortung.
- Das Programm ist natürlich Public Domain. Wenn aber jemand glaubt, sich
- zum Mäzen eines notleidenden PD-Autors aufschwingen zu müssen, soll's
- mir auch recht sein...
-
-
-
- And now the English text ...
-
-
- I) Introduction
-
- To start with, my knowledge of English is poor and my typewriting even
- worse. Therefore I'll try to put it briefly.
-
- This is an upgraded version of GSTLINK (or LINKER, or LD) a PD-program
- intended as substitute for LINK by GST. (As distributed eg. with Lattice-C.)
- FLINKER is 2 to 3 times faster ( when applied to >150kb programs ) than GSTLINK
- which itself claims to be 3 times faster than the original LINK by GST.
-
- If you are familiar with GSTLINK (as I hope) a small summary of
- improvements will be sufficient.
-
-
- II) Summary of Improvements over GSTLINK
-
- 1. .......... SPEEED!!!
-
- 2. FLINKER does no longer keep BSS (UDATA) in memory, which saves
- space and speeds up the linking process.
-
- 3. Options '-WITH', '-LIST' and '-PROG' will use 'LNK', 'MAP' and
- 'PRG' as default extensions.
-
- 4. New control file command:
- DATA <decimal value>[K] ( upper- or lowercase )
- ...will add <decimal value> bytes to BSS.
- If added, 'K' will multiply <decimal value> by 1024.
-
- 5. '.BIN'-files output by the Prospero FORTRAN compiler will be
- accepted by FLINKER. ( Sorry, option '-NOSEC' only! )
- I have strong objections against FORTRAN, therefore I did not
- much testing on this.
-
- 6. '-BUF 0' is now a legal option. If specified, libraries will be
- included with any, even unreferenced, module. So all 'LIBRARY'
- commands in the control file will have the effect of 'INPUT'
- commands.
-
- All other differences regard mostly the inner workings of FLINKER,
- and probably will never be noticed.
-
-
- III) Summary of Differences to LINK (original GST)
-
- General Differences
- FLINKER is a one-pass linker which holds all linked code in main memory.
- It is optimized for use with GEMDOS, and will not produce absolute code,
- (i.e. code that lives only at a fixed address). Several rarely used
- features (with Lattice-C) are omitted.
-
- Omitted Control File Commands
- - 'EXTRACT ... FROM ...'
- - 'SECTION ...'
- - 'COMMON ...'
- - 'OFFSET ...'
- - 'DEFINE ...'
-
- Omitted Command Line Options
- - '-CRF'
- - '-PAGELEN ...'
-
- New Command Line Options
- - '-SEC'
- Sections named 'BSS' or 'UDATA' will be put into
- GEMDOS Block Storage Section (which requires no disk space),
- 'DATA' into GEMDOS Data Section and all others into GEMDOS
- Text Section.
- - '-NOSEC'
- All sections will be put into GEMDOS Text Section (like
- LINK by GST). The file size of the executable program will
- usually be longer than those produced with option '-SEC'.
- - '-MEM <size>' ( 2 < <size> < 4000 )
- Reserves <size> kbytes for program memory. Should be larger
- than the expected size of the executable file. Too small <size>
- will result in error 1.
- - '-BUF <size>' ( <size> < 800 )
- Reserves <size> kbytes for the module buffer. Should be larger
- than the largest module within the files scanned by the
- 'LIBRARY' command. Too small <size> will result in error 9.
-
-
- IV) How to Run FLINKER
-
- Exactly like GSTLINK or LINKER or LD or whatever you called it.
- Double-click on FLINKER.TTP and enter a command line with the following
- format:
-
- [<module> [<control> [<listing> [<program>]]]] {<option>}
-
- where:
-
- <option> = -WITH <control> |
- -NOPROG | -PROG [<program>] |
- -NOLIST | -LIST [<listing>] |
- -NODEBUG | -DEBUG |
- -NOSYM | -SYM |
- -NOSEC | -SEC |
- -MEM <size> | -BUF <size>
- (options are case insensitive)
-
- <module> file name of an object file ( default: <module>.BIN )
- <control> file name of control file ( default: <module>.LNK )
- <program> file name for program output ( default: <module>.PRG )
- <listing> file name for listing output ( default: <module>.MAP )
- <size> decimal number (kbytes)
-
- Default options: -NOLIST -NODEBUG -NOSYM -NOSEC -MEM 100 -BUF 32
-
-
- V) Error Messages
-
- Error 0: Out of memory.
- Remove your RAM disk and all accessories, buy a MEGA ST4 or try to
- decrease the size of the program memory or module buffer.
- ( See options '-MEM' and '-BUF'. )
-
- Error 1: Program memory too small.
- See option '-MEM'.
-
- Error 6: ORG encountered.
- Sorry, FLINKER will not produce absolute code.
-
- Error 7: Should not occur.
- Exactly.
-
- Error 9: Buffer too small.
- See option '-BUF'.
-
- Error 10: Cannot write file correctly.
- Error 17: Cannot open list-file.
- Disk errors. Probably not enough disk-space.
-
- Error 16: No filename specified.
- <module> missing in command line.
-
- Error 18: Cannot open control-file.
- File not found.
-
- Error 2: Error in binary file.
- Error 3: Too many operands in XREF.
- Error 4: Illegal section id.
- Error 5: Illegal symbol id.
- Error 8: Runtime relocation at odd address.
- Error 11: Illegal XREF operator.
- Error 12: Illegal directive.
- Error 13: Undefined symbol id.
- Error 14: Undefined section id.
- Error 15: Initialized BSS.
- Scrambled binary files or compiler/assembler error.
- Try recompiling/reassembling or swearing.
-
-
- VI) That's All, Folks!
-
- FLINKER is, of course, still (forever?) under development, so bug
- reports, suggestions etc are welcome.
- I hope FLINKER will prove to be as useful to you as it is to me.
- My snail mail address runs as follows...
-
- Gottfried Ira
- Peilgasse 51/19
- A-1080 Vienna
- Austria/Europe ( NOT Australia !! )
-
- If you prefer email, you may send it to Robert:
-
- E359205@AWITUW01.BITNET
- E359205@AWITUW01.UNA.AT
- MESSAROS@EUEV88.BITNET
- MESSAROS@EUEV88.UNA.AT
-
-