Neues vom STRIP Forth-Prozessor Tagung der Forth-Gesellschaft März 2014 Bad Vöslau/Österreich Willi Stricker
-Prozessor Inhalt 1. STRIP-Befehlssatz Bisher: minimaler Befehlssatz neu: erweiterter Befehlssatz 2. Aufbau eines STRIP-Forth Systems Neues vom STRIP-Processor - März 2014 2
-Prozessor Software-Ausstattung Befehlssatz Minimal-Befehlssatz Er enthält alle diejenigen Befehle, die für den Aufbau eines Forth-Systems zwingend erforderlich sind. Außerdem enthält er zusätzliche Befehle, die für die Hardware-Steuerung benötigt werden. Neues vom STRIP-Processor - März 2014 3
-Prozessor Befehlssatz Erweiterter STRIP-Befehlsatz Zweck der Erweiterung: Höhere Ablaufgeschwindigkeit. Er enthält weitere in Hardware ausgeführte Funktionen: Die Auswahl nach folgenden Kriterien: 1. Hardware-Aufwand 2. Benutzungs-Häufigkeit Neues vom STRIP-Processor - März 2014 4
-Prozessor Befehlssatz Basis: Forth Standard 200X Er besteht aus: - Core Word Set - Zusatzfunctionen Neues vom STRIP-Processor - März 2014 5
-Prozessor Befehlssatz Core Word Set er besteht aus 3 Gruppen Nucleus Interpreter Compiler Der STRIP Befehlssatz enthält nur Words aus dem Nucleus Neues vom STRIP-Processor - März 2014 6
-Prozessor Befehlssatz STRIP Nucleus Words Minimal-Befehlssatz (schwarz) nur Hardware Forth Standard Words zusätzliche Words (kursiv) Erweiterter Befehlssatz entweder Hardware als Primitives (rot/rot) oder Software als High level functions (blau/blau) Neues vom STRIP-Processor - März 2014 7
System-Befehle Hilfsfunktionen für den Compiler (runtime code of compiling words) ;S ( -- ) return ; LIT ( -- data ) immediate Wert LITERAL BRANCH ( -- ) unbedingte Verzweigung?BRANCH ( data -- ) bedingte Verzweigung für Structuren IF,ELSE THEN BEGIN UNTIL WHILE REPEAT Neues vom STRIP-Processor - März 2014 8
Processor Steuerungs-Befehle (Hardware-Steuerung) DISINT ( -- ) Disable Interrupts ENINT ( -- ) Enable Interrupts Neues vom STRIP-Processor - März 2014 9
Indirekter Befehls- und Unterprogramm-Aufruf EXECUTE ( address -- ) Neues vom STRIP-Processor - März 2014 10
RP@ ( -- RP ) RP! ( RP -- ) >R ( data -- ) R> ( -- data ) R@ ( -- data ) Return stack manipulation Neues vom STRIP-Processor - März 2014 11
Parameter stack manipulation SP@ ( -- SP ) SP! ( SP -- ) DEPTH ( -- SP ) identisch mit SP@ DROP ( data -- ) PICK ( position -- data ) -PICK ( data position -- ) DUP ( data - data data )?DUP ( data - data data if data <> 0 ) OVER ( data0 data1 - data0 data1 data0 ) ROT ( data0 data1 data2 - data1 data2 data0 ) SWAP ( data0 data1 - data1 data0 ) ROLL ( data nth data ) NIP ( data0 data1 - data1 ) TUCK ( data0 data1 - data1 data0 data1 ) NDROP ( data - ) Neues vom STRIP-Processor - März 2014 12
Memory access @ ( address -- data )! ( data address -- ) W@ ( address -- 0 word ) {32 bits only} W! ( word address -- ) {32 bits only} C@ ( address -- 0 byte ) C! ( byte address -- ) +! ( data address -- ) Neues vom STRIP-Processor - März 2014 13
Logic functions INVERT ( data -- result ) AND ( data1 data2 -- result ) OR ( data1 data2 -- result ) XOR ( data1 data2 -- result ) NOT ( flag -- flag ) identisch mit 0= Neues vom STRIP-Processor - März 2014 14
Compare functions 0= ( data1 data2 -- flag ) 0<> ( data1 data2 -- flag ) 0< ( data1 data2 -- flag ) 0> ( data1 data2 -- flag ) = ( data1 data2 -- flag ) <> ( data1 data2 -- flag ) < ( data1 data2 -- flag ) > ( data1 data2 -- flag ) >= ( data1 data2 -- flag ) <= ( data1 data2 -- flag ) U> ( data1 data2 -- flag ) U< ( data1 data2 -- flag ) U>= ( data1 data2 -- flag ) U<= ( data1 data2 -- flag ) FALSE ( -- false-flag ) TRUE ( -- true-flag ) Neues vom STRIP-Processor - März 2014 15
Select fuctions MIN ( data0 data1-- data-min ) MAX ( data0 data1-- data-max ) ABS ( data -- abs-data ) Neues vom STRIP-Processor - März 2014 16
Shift functions U2/C ( data -> carry result ) U2* ( data data*2 ) U2/ ( data data/2 ) LSHIFT ( data0 data1 -- data0*(2**data1)) RSHIFT ( data0 data1 -- data0/(2**data1)) Neues vom STRIP-Processor - März 2014 17
Arithmetic functions: plus, minus +C ( data0 data1 -- sum carry ) + ( data0 data1 -- sum ) NEGATE ( data -- -data ) - ( data1 data2 -- difference ) 1+ ( data -- data+1 ) 1- ( data -- data-1 ) Neues vom STRIP-Processor - März 2014 18
Arithmetic functions: multiply UM* ( data0 data1 prod-l prod-h ) M* ( data0 data1 prod-l prod-h ) * ( data0 data1 prod ) Neues vom STRIP-Processor - März 2014 19
Arithmetic functions: Divide UM/MOD ( data-l data-h div quot mod ) FM/MOD ( data-l data-h div quot mod ) SM/REM ( data-l data-h div quot mod ) /MOD ( data div quot mod ) / ( data div quot ) MOD ( data div mod ) Neues vom STRIP-Processor - März 2014 20
Arithmetic functions: multiply, divide */ ( data0 data1 div data0*data1/div ) */MOD ( data0 data1 div data0*data1/div mod ) Neues vom STRIP-Processor - März 2014 21
Constants 0 ( -- 0 ) identisch mit FALSE 1 ( -- 1 ) -1 ( -- -1 ) identisch mit TRUE Neues vom STRIP-Processor - März 2014 22
Gegenwart und Zukunft Forth-System mit Strip-Processor - Strip-System als Forth Target am Host-Rechner - Strip-System mit angeschlossenem Hilfs-Rechner als dummes Terminal - Strip-System als eigenständiger Forth Rechner Neues vom STRIP-Processor - März 2014 23
Strip-System als Forth Target am Host-Rechner Hardware Prozessor-Board STRIP Prozessor ROM RAM Software: Forth Nucleus Interface-Programm als Slave Rechner z.b. PC Hardware: Vollständiger Rechner mit Keyboard, Monitor Massenspeicher usw. Software Vollständiges Forth-System: Nucleus,Interpreter,Compiler, Block und File-system Target Nucleus als Vocabulary über Interface-Programm Neues vom STRIP-Processor - März 2014 24
Strip-System mit angeschlossenem Hilfs-Rechner als dummes Terminal Prozessor-Board Beliebiger Rechner z.b. PC STRIP Prozessor ROM RAM Software: Vollständiges Forth-System Nucleus Interpreter Compiler Disk/Filesystem Keyboard Forth-Words: KEY, KEY? Monitor Forth Words: EMIT Massenspeicher Forth Words: BLOCK-READ BLOCK-WRITE Software Interface Programm mit den benötgten Befehlen Neues vom STRIP-Processor - März 2014 25
Strip-System als eigenständiger Forth Rechner Prozessor-Board STRIP Prozessor ROM Angeschlossene Hardware Keyboard RAM Monitor Software: vollständiges Forth-System mit benötigten Programmen für die angeschlossene Hardware Massenspeicher Neues vom STRIP-Processor - März 2014 26
Ende Noch Fragen? Neues vom STRIP-Processor - März 2014 27