home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Computer Club Elmshorn Atari PD
/
CCE_PD.iso
/
mac
/
1000
/
CCE_1021.ZIP
/
CCE_1021
/
JAS2X9
/
JAS.CHG
next >
Wrap
Text File
|
1994-11-03
|
6KB
|
140 lines
jas 2.00 eXtended Version
last modifications - by Thorsten Roskowetz -
version x9
Nov 01 1994
- fixed a couple of serious bugs in the branch optimization
code (one of them I introduced myself back in x7); as a
side-effect the statistics shown in verbose mode should be
correct now
- added all missing string-escape-sequences (as per ANSI)
- changed handling of numerical constants; as a consequence a
leading "0" implies an octal constant, "0x" a hex constant
(the old prefixes '$' and '@' still work of course)
- small performance tweaks
version x8
Oct 24 1994
Since version 1.2 jas contains changes for minix:
- input compatibility with ack
- short absolute addressing mode
- explicit pc-relative addressing mode (involving text labels)
This version of SozobonX's jas is compiled to use them...
version x7
Oct 20 1994
bug fixed:
jas will no longer use a 'bsr' when the destination
isn't within the appropriate +/-32K range (this was
a problem with the branch optimization algorithm)
bug fixed:
'~'-operator will work correctly now
changed sources so that jas will compile with MiNTlibs and
with c68 if requiered (new file proto.h); fixed most
of the more serious warnings c68 reports
----
version x6
Jul 21 1994
changes by Jerry Geiger
small bugfixes and std interface
version x5
??? ?? 199?
changes by Jerry Geiger
----
Änderungen an JAS, vorgenommen von Holger Weets
Stand: 18.11.92
2.0 -> 2.00x1:
- mit neuem Compiler, Optimizer und XDLibs übersetzt
--> statt 38 KB jetzt nur noch 32 KB lang
(noch ohne peephole changes)
- Versions-Meldung auf die anderen Komponenten angepasst
- Fehlermeldungen an die des Compilers angepasst, damit daß
Error-Handling unter C-Desk besser läuft
- statt 'bra.b' kann jetzt richtigerweise auch 'bra.s' geschrieben
werden. Gleiches gilt für alle '.b' Endungen.
- Datei Ein-/Ausgabe umgeschrieben, ist jetzt wesentlich schneller und
kürzer; jetzt ist er (immer noch ohne peephole changes) nur noch
28 KB lang ...
- JAS liest jetzt auch großgeschriebene Kommandos ein,
wie z.B. "MOVE.L D0, A0".
Vorgesehen war das bereits, aber funktioniert hat es nicht...
- Die Angabe von '-o <OUTFILE>' ist jetzt WIRKLICH optional; auch das
war bereits vorgesehen, funktionierte aber nicht.
- "dc.w <LABEL>" erzeugt einen Wortbreiten Eintrag in der Datei,
welcher nicht reloziert werden muß, und den Abstand von der
aktuellen Position zur Adresse des Labels angibt.
Dies ist äußerst vorteilhaft für die Erzeugung kurzer Programme, denn
XCC V2.00x5+ erzeugt dc's bei Switches in Form von Sprungtabellen,
bisher als ".dc.l <LABEL>, jetzt als ".dc.w <LABEL>"
-> die Tabelle wird nur halb so lang
-> der Zugriff ist schneller und kürzer
-> es können evtl. mehr kurze Branches erzeugt werden
- erkennt jetzt die Pseudo - Ops
CODE (*) TEXT, .TEXT -- Text-Segment-Anfang, optional mit Namen
DATA, .DATA -- Data-Segment-Anfang, optional mit Namen
BSS .BSS -- BSS-Segement-Anfang, optional mit Namen
XDEF (*), GLOBL, .GLOBL -- Symbol exportieren, Namensliste erlaubt
XREF (*) -- Symbol importieren, Namensliste erlaubt
(wurde nur aus Kompatibilitäts-
Gründen aufgenommen und ist nicht
notwendig, tut auch nichts)
END, .END -- Assemblierung beenden
ORG, .ORG -- aktuelle Adresse setzen
EVEN, .EVEN -- nachfolgende Daten auf gerade Adresse
EQU, .EQU -- Zuweisung <name> = <wert>
DC, .DC -- nachfolgende Daten speichern
DS, .DS -- Bytes reservieren
COMM, .COMM -- Größe eines externen Symbols
definieren
Die mit (*) gekennzeichneten Pseudo-Ops habe ich aus Kompatibilitäts-
Gründen ergänzt.
Auch hier ist die Groß-/Kleinschreibung egal.
2.00x1 -> 2.00x2:
- mit den neusten Komponenten übersetzt, jetzt auch mit Peepholechanges
->nur noch 25 KB...
- wenn eine leere Datei übersetzt werden sollte (leere Segmente, also
nur Pseudo-Ops), dann schrieb jas den Datenträger bis an den Rannd
voll, was bei einer Festplatte schon etwas dauern konnte...
Behoben.
2.00x2 -> 2.00x3:
- PseudoOp "PUBLIC" wird erkannt (ebenfalls Kompatibilität)
- wenn lokale Symbole in die Tabelle aufgenommen werden sollen (-L), dann
werden bei Level 1 jetzt nicht mehr nur die aussortiert, die mit einem
'L' beginnen, sondern auch solche, die mit einem 'T' beginnen (der TOP
erzeugt solche schon immer, aber Tony hat Joe davon wohl nichts erzählt)
2.00x3 -> 2.00x4:
- neue Option '-e ERRORFILE' eingebaut; Fehlermeldungen werden auf den
Bildschirm und in die Datei ERRORFILE geschrieben
ANMERKUNGEN:
- JAS kann auch C-Kommantare (/* ... */)
- '@' ist das Prefix fuer Oktal-Konstanten
- '$' ist das Prefix fuer Hex-Konstanten
- '<<' und '>>' werden erkannt (Shift-Operation)
- pro Ausdruck ist nur ein Label erlaubt (warum ?)
BUGS:
- jsr LABEL(pc)
wird nicht angemeckert, wenn LABEL nicht in der selben Datei
definiert ist, funktioniert aber trotzdem nicht!
- move.X LABEL(pc, d0.w), Y
funktioniert nicht, move.X 0(pc, d0.w), Y aber wohl
- pea 1000
erzeugt nicht, wie es sein sollte, absolute short, sondern
absolute long ...
FEHLT NOCH:
- die Erkennung dessen, was nun eigentlich in einer Zeile steht,
ist immer noch viel zu kompliziert
(JAS ist mit LEX und YACC geschrieben, was bei einem Assembler-
Scanner nun wirklich nicht nötig ist, und außerdem viel zu
langsam und lang)