ndr-nkc.de ndr-nbc.de
  
Startseite
News
 
NDR-NKC
Geräte Z80
Geräte 68000
Geräte 8088
 
Z80 Section
Baugruppen
ROM's
Software
68000 Section
Baugruppen
ROM's
PASCAL/S
Software
8088 Section
Baugruppen
Downloads
 
Bussysteme
Stromversorgung
Input / Output
Grafikkarten
Speicherkarten
Massenspeicher
Weitere Baugruppen
 
Projekte
 
Dokumentation
Datenblätter
Glossar
Portraits
Links

Impressum

 

STRUCTA - Ein Precompiler für Z80

Structa ist ein Precompiler, der es erlaubt in Z80 Assembler-Programmen strukturierte Anweisungen zu benutzen. Diese Anweisungen werden durch den Precompiler in richtige Z80 Mnemonics übersetzt und können anschließend mit einem normalen Assembler in Maschinenöle überführt werden. So ist es möglich mit Anweisungen die an Hochsprachen wie BASIC oder PASCAL angelehnt sind übersichtlichen Quelltext zu schreiben und trotzdem schnellen Maschinencode zu erzeugen. Die Software wurde von R.D. Klein 1983 entwickelt und ist unter CP/M lauffähig.

Strukturierte Anweisungen

Besonders hilfreich sind die strukturierten Anweisungen für Abfragen und verschiedene Schleifen. Im Gegensatz zu reinem Assemblercode muss man hier keine Labels definieren, dies erfolgt automatisch durch den Precompiler. Alle Anweisungen lassen sich verschachteln.

  • IF bedingung code ENDIF
  • IF bedingung code ELSE code ENDIF
  • IF bedingung code ELSEIF bedingung code ELSE code ENDIF
  • WHILE bedingung code ENDWHILE
  • DO bedingung code ENDDO
  • DO register,wert code ENDDO
  • LOOP code EXITIF bedingung code ENDLOOP
  • REPEAT code UNTIL bedingung

alle Strukturen sind in der Anleitung mit Beispielen beschrieben und es wird zusätzlich der generierte Maschinencode gezeigt. Die Anleitung kann auch ohne die Benutzung von Strukta helfen Probleme in reiner Maschinensprache zu lösen.

Logische Verknüpfungen

Bei allen strukturierten Anweisungen lassen sich die Bedingungen leserlich angeben und mehrere Bedingungen kombinieren. Hier einige Beispiele:

  • IF a=0 code ENDIF
  • IF not [ a=0 or not b=0 and c=3 ] code ENDIF
  • EXITIF not [ c or nz ] and pe or m
  • EXITIF hl=0 or bc=0
  • IF (hl) IN [ 'A' .. 'F', '0' .. '9' ] code ENDIF

Code-Erzeugung

Der durch den Precompiler erzeugte Assemblercode ist übersichtlich und mit Kommentaren versehen. Der Code erscheint effizient, wenn er auch nicht weiter optimiert ist.

Beispiel

; if a=0
nop
; else
nop
; endif

Übersetzter Code

   OR A
   JP NZ, .L38
   nop
   JP .L39
.L38:
   nop
.L39:

Der erzeugte Assemblercode ist allerdings nicht optimal, bei diesem Beispiel hätten die Sprünge mit JR-Statements anstatt der um 1 Byte längeren JP-Statements erzeugt werden können.

Beschreibung

STRUCTA
42 Seiten
12,7 MByte
Aus dem Inhalt
Aufruf, Befehlssatz, Wirkungsweise, Fehlerbehandlung, Syntaxdiagramme
PDF öffnen