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 >
Text File  |  1994-11-03  |  6KB  |  140 lines

  1. jas 2.00 eXtended Version
  2. last modifications - by Thorsten Roskowetz - 
  3.  
  4. version x9
  5. Nov 01 1994
  6.     - fixed a couple of serious bugs in the branch optimization
  7.       code (one of them I introduced myself back in x7); as a
  8.       side-effect the statistics shown in verbose mode should be
  9.       correct now
  10.     - added all missing string-escape-sequences (as per ANSI)
  11.     - changed handling of numerical constants; as a consequence a
  12.       leading "0" implies an octal constant, "0x" a hex constant
  13.       (the old prefixes '$' and '@' still work of course)
  14.     - small performance tweaks
  15.  
  16. version x8
  17. Oct 24 1994
  18.     Since version 1.2 jas contains changes for minix:
  19.     - input compatibility with ack
  20.     - short absolute addressing mode
  21.     - explicit pc-relative addressing mode (involving text labels)
  22.     This version of SozobonX's jas is compiled to use them...
  23.  
  24. version x7
  25. Oct 20 1994
  26.     bug fixed:
  27.         jas will no longer use a 'bsr' when the destination
  28.         isn't within the appropriate +/-32K range (this was
  29.         a problem with the branch optimization algorithm)
  30.     bug fixed:
  31.         '~'-operator will work correctly now
  32.     changed sources so that jas will compile with MiNTlibs and
  33.         with c68 if requiered (new file proto.h); fixed most
  34.         of the more serious warnings c68 reports
  35.  
  36. ----
  37. version x6
  38. Jul 21 1994
  39.     changes by Jerry Geiger
  40.         small bugfixes and std interface 
  41.  
  42. version x5
  43. ??? ?? 199?
  44.     changes by Jerry Geiger
  45.  
  46. ----
  47. Änderungen an JAS, vorgenommen von Holger Weets
  48. Stand: 18.11.92
  49.  
  50. 2.0 -> 2.00x1:
  51.    - mit neuem Compiler, Optimizer und XDLibs übersetzt
  52.       --> statt 38 KB jetzt nur noch 32 KB lang
  53.           (noch ohne peephole changes)
  54.    - Versions-Meldung auf die anderen Komponenten angepasst
  55.    - Fehlermeldungen an die des Compilers angepasst, damit daß
  56.      Error-Handling unter C-Desk besser läuft
  57.    - statt 'bra.b' kann jetzt richtigerweise auch 'bra.s' geschrieben
  58.      werden. Gleiches gilt für alle '.b' Endungen.
  59.    - Datei Ein-/Ausgabe umgeschrieben, ist jetzt wesentlich schneller und
  60.      kürzer; jetzt ist er (immer noch ohne peephole changes) nur noch
  61.      28 KB lang ...
  62.    - JAS liest jetzt auch großgeschriebene Kommandos ein,
  63.      wie z.B. "MOVE.L D0, A0".
  64.      Vorgesehen war das bereits, aber funktioniert hat es nicht...
  65.    - Die Angabe von '-o <OUTFILE>' ist jetzt WIRKLICH optional; auch das
  66.      war bereits vorgesehen, funktionierte aber nicht.
  67.    - "dc.w <LABEL>" erzeugt einen Wortbreiten Eintrag in der Datei,
  68.      welcher nicht reloziert werden muß, und den Abstand von der
  69.      aktuellen Position zur Adresse des Labels angibt.
  70.      Dies ist äußerst vorteilhaft für die Erzeugung kurzer Programme, denn
  71.      XCC V2.00x5+ erzeugt dc's bei Switches in Form von Sprungtabellen,
  72.      bisher als ".dc.l <LABEL>, jetzt als ".dc.w <LABEL>"
  73.      -> die Tabelle wird nur halb so lang
  74.      -> der Zugriff ist schneller und kürzer
  75.      -> es können evtl. mehr kurze Branches erzeugt werden
  76.  
  77.    - erkennt jetzt die Pseudo - Ops
  78.         CODE (*) TEXT, .TEXT        -- Text-Segment-Anfang, optional mit Namen
  79.         DATA,  .DATA                -- Data-Segment-Anfang, optional mit Namen
  80.         BSS .BSS                    -- BSS-Segement-Anfang, optional mit Namen
  81.         XDEF (*), GLOBL, .GLOBL     -- Symbol exportieren, Namensliste erlaubt
  82.         XREF (*)                    -- Symbol importieren, Namensliste erlaubt
  83.                                        (wurde nur aus Kompatibilitäts-
  84.                                        Gründen aufgenommen und ist nicht
  85.                                        notwendig, tut auch nichts)
  86.         END, .END                   -- Assemblierung beenden
  87.         ORG, .ORG                   -- aktuelle Adresse setzen
  88.         EVEN, .EVEN                 -- nachfolgende Daten auf gerade Adresse
  89.         EQU, .EQU                   -- Zuweisung <name> = <wert>
  90.         DC, .DC                     -- nachfolgende Daten speichern
  91.         DS, .DS                     -- Bytes reservieren
  92.         COMM, .COMM                 -- Größe eines externen Symbols
  93.                                        definieren
  94.     Die mit (*) gekennzeichneten Pseudo-Ops habe ich aus Kompatibilitäts-
  95.     Gründen ergänzt.
  96.     Auch hier ist die Groß-/Kleinschreibung egal.
  97. 2.00x1 -> 2.00x2:
  98.    - mit den neusten Komponenten übersetzt, jetzt auch mit Peepholechanges
  99.      ->nur noch 25 KB...
  100.    - wenn eine leere Datei übersetzt werden sollte (leere Segmente, also
  101.      nur Pseudo-Ops), dann schrieb jas den Datenträger bis an den Rannd
  102.      voll, was bei einer Festplatte schon etwas dauern konnte...
  103.      Behoben.
  104. 2.00x2 -> 2.00x3:
  105.    - PseudoOp "PUBLIC" wird erkannt (ebenfalls Kompatibilität)
  106.    - wenn lokale Symbole in die Tabelle aufgenommen werden sollen (-L), dann
  107.      werden bei Level 1 jetzt nicht mehr nur die aussortiert, die mit einem
  108.      'L' beginnen, sondern auch solche, die mit einem 'T' beginnen (der TOP
  109.      erzeugt solche schon immer, aber Tony hat Joe davon wohl nichts erzählt)
  110. 2.00x3 -> 2.00x4:
  111.    - neue Option '-e ERRORFILE' eingebaut; Fehlermeldungen werden auf den
  112.      Bildschirm und in die Datei ERRORFILE geschrieben
  113.  
  114.  
  115. ANMERKUNGEN:
  116.    - JAS kann auch C-Kommantare (/* ... */)
  117.    - '@' ist das Prefix fuer Oktal-Konstanten
  118.    - '$' ist das Prefix fuer Hex-Konstanten
  119.    - '<<' und '>>' werden erkannt (Shift-Operation)
  120.    - pro Ausdruck ist nur ein Label erlaubt (warum ?)
  121.  
  122.  
  123. BUGS:
  124.    - jsr LABEL(pc)
  125.      wird nicht angemeckert, wenn LABEL nicht in der selben Datei
  126.      definiert ist, funktioniert aber trotzdem nicht!
  127.    - move.X LABEL(pc, d0.w), Y
  128.      funktioniert nicht, move.X 0(pc, d0.w), Y aber wohl
  129.    - pea 1000
  130.      erzeugt nicht, wie es sein sollte, absolute short, sondern
  131.      absolute long ...
  132.  
  133. FEHLT NOCH:
  134.    - die Erkennung dessen, was nun eigentlich in einer Zeile steht,
  135.      ist immer noch viel zu kompliziert
  136.      (JAS ist mit LEX und YACC geschrieben, was bei einem Assembler-
  137.      Scanner nun wirklich nicht nötig ist, und außerdem viel zu
  138.      langsam und lang)
  139.  
  140.