Download TBC (TOKIWA BASIC Compiler) Benutzerhandbuch
Transcript
/mov ax,[bx+si+offset ary(0)] Zugriff auf Parameter in SUBROUTINE- und FUNCTION-Anweisungen: /mov /inc ax,arg arg Dies wird übersetzt in mov ax,[bp+n] und inc word ptr [bp+n]. Ergänzung: Unterprogramme und Funktionen werden in TOKIWA-Basic nach C-Konventionen aufgerufen. Dies bedeutet, dass die Argumente (die hier grundsätzlich 16 Bit breit sind) in umgekehrter Reihenfolge, das heißt das letzte zuerst, auf den Stack gelegt werden. Zuletzt wird vor dem Aufruf die Rückkehradresse (16-Bit-Offset im Codesegment – es gibt nur NEAR-Aufrufe) auf den Stack gelegt. Das Abräumen des Stacks übernimmt der Aufrufer. Lokale (Integer-)Variablen stehen in der Reihenfolge ihrer Deklaration „unterhalb“ der Rückkehradresse. Sie werden unmittelbar beim Eintritt in ein Unterprogramm auf den Stack gelegt. Das Unterprogramm muss den Wert des BP-Registers sichern und den Stack-Pointer (SP) bei der Rückkehr auf den Wert von BP setzen. Beim Eintritt in ein Unterprogramm sieht der Stackframe demnach wie folgt aus: BP+2n … BP+4 BP+2 BP BP-2 BP-2 … SP=BP-2m arg n … arg2 arg1 return offset local integer variable 1 local integer variable 2 … local integer variable m Lokale Real- und String-Variablen sind statisch. Das bedeutet, sie sind zwar nur lokal sichtbar, werden aber nicht auf den Stack, sondern global im Datensegment angelegt. (2) Referenzieren von Zeilennummern und Labels Als Offset-Adressen: /mov /mov /mov /inc bx,@100 [bx+si+@100],cx ax,[@100+2] byte ptr [@100] Als Sprungziele /jmp /call /jz @100 @100+2 @name Ergänzung: Das @-Symbol liefert im Inline-Assembler die Offset-Adresse eines Symbols im Codesegment. Es ist auf Zeilennummern ebenso anwendbar, wie auf Label-Bezeichner oder die Bezeichner 69