Referenzhandbuch
|
Kapitel 19
|
Assembler
Dieses Kapitel befasst sich mit der Übernahme von Assemblercode in AB2.
Sollten Sie sich hiermit nicht beschäftigen wollen, können Sie dieses Kapitel übergehen.
Um Assemblercode zu übernehmen, ist es nicht nötig, daß Sie auch in Assembler programmieren
können. Sie können fertigen Code in Ihre Programme einbauen. Dies ist mit AB2 recht einfach.
Alle 68000er Mnemonics werden von AB2 erkannt und bei Programmausführung mitcompiliert.
Ebenfalls ist ein Mischen von Basic und Assembler möglich. Auf den Disketten finden Sie einen
einfachen Assembler, mit dem Sie Ihren eigenen Code schreiben können. Compiliert wird dieser
dann mit AB2. Wenn Sie die Fehlerüberwachung eingeschaltet haben, werden Ihnen evtl.
auftretende Fehler gemeldet.
Möchten Sie Basic und Assembler gemischt benutzen, beachten Sie bitte folgendes:
Die Adressregister A4-A6 müssen bei einigen Assemblerroutinen zwischengespeichert und
restauriert werden. AB2 benutzt A5 für globale und A4 für lokale Variablen, A6 wird oft für
den Datenaustausch genutzt.
Der AmiBlitz2-Assembler hat einige Grenzen:
- Die absolute Kurzadressierung ist nicht möglich
- Short Branches (Kurzverzweigungen) sind nicht möglich
- Einige Assemblerausdrücke müssen in Schweifklammern ("{" und "}") gesetzt werden, um eine
vorrangige Ausführung zu erreichen.
Ansonsten ist der Assembler mit kommerziellen Produkten identisch.
Befehl: DC
Syntax: DC [.Size] Data[,Data...]
DC steht für "define constant" und wird benutzt, um Datenfelder für das Assemblerprogramm
einzurichten.
Befehl: DCB
Syntax: DCB [.Size] Repeats, Data
Steht für "define constant block". DCB erlaubt das Einfügen von wiederholt vorkommenden
Serien des gleichen Wertes in das Assemblerprogramm.
Repeats gibt die Anzahl der Wiederholungen an.
Befehl: DS
Syntax: DS [.Size] Länge
Steht für "define storage". Es ist ein einfacher Weg, um einen Datenfeldbereich einzurichten.
Befehl: Even
Syntax: Even
Stellt sicher, daß die DC-, DCB- und DS-Befehle
an eine gerade Adresse geschrieben werden.
Befehl: GetReg
Syntax: GetReg 68000 Reg, Ausdruck
GetReg erlaubt die Übergabe eines Basicausdruckergebnisses in ein 68000er-Register. Das Ergebnis muß
zuvor in ein Langwort gewandelt werden, bevor es in das Register übergeben werden kann.
GetReg übergibt nur in eines der 8 Datenregister (d0-d7).
GetReg benutzt den Stack, um das Register zwischenzuspeichern.
Befehl: PutReg
Syntax: PutReg 68000 Reg, Variable
PutReg ermöglicht die Übergabe eines Wertes aus den 68000er-Datenregistern (d0-d7/a0-a7) in eine
BASIC-Variable. Ist die ausgewählte Variable ein String, ein Langwort, eine Fließkommazahl oder ein Quickwert, dann werden alle
4 Bytes aus dem Register übergeben. Ist die ausgewählte Variable ein Wordwert oder ein Byte, werden nur die relevanten Lowbytes
übergeben.
Befehl: SysJsr
Syntax: SysJst Routine
SysJsr erlaubt den Aufruf einer der Blitz2-Systemroutinen. Routine gibt die
Routinennummer der aufzurufenden Routine an.
Befehl: TokeJsr
Syntax: TokeJsr Token[,Form]
TokeJsr erlaubt den Aufruf von Routinen, die auf einer Blitz2-Library basieren.
Token gibt die Tokennummer oder den aktuellen Tokennamen an. Form
gibt die Form des Token wieder.
Befehl: ALibJsr
Syntax: ALibJsr Token[,Form]
ALibJsr wird nur verwendet, wenn eine selbstgeschriebene Library benutzt werden soll.
ALibJsr erlaubt deren Aufruf.
(Hier: Amiga-Library)
Befehl: BLibJsr
Syntax: BLibJsr Token[,Form]
BLibJsr wird nur verwendet, wenn eine selbstgeschriebene Library benutzt werden soll.
BLibJsr erlaubt deren Aufruf.
(Hier: Blitz2-Library)
|