Gast
#11900
Hallo, ich will versuchen ein kleines Interpreter-System für meinen AVR zu schreiben. Dazu will ich den Compiler den Code in Byte-Tokens übersetzen lassen. Im AVR selbst sollen dann die zum Token gehörigen Routinen mit einer Sprungtabelle angesprungen werden. Mit dem folgenden Code kann ich die zum Token gehörige Sprungadresse holen. Wie kann man es schaffen, an diese Adresse (in r1 u. r2) zu springen? MfG Matthias .include "2333def.inc" .def sprung_low = r1 .def sprung_high = r2 ;... ;Token holen ;... ldi r30,low(tabelle) ;Anfang der Tabelle in Z-Pointer ldi r31,high(tabelle) ;Token auf Anfangsadresse addieren ;... lpm ;Low-Byte der Sprungadresse holen mov r0,sprung_low adiw r30,1 ;Z-Pointer inkrementieren lpm ;High-Byte der Sprungadresse holen mov r0,sprung_high ;Sprung an 'sprung_low','sprung_high' ;... ;Routinen für Tokens token1: nop ret token2: nop ret ;... ;Sprungtabelle tabelle: .dw token1,token2