uprav
na konec

lit

Programovací jazyk lit je součást mé diplomové práce stejně jako návrh a implementace zásobníkového procesoru na FPGA. Lit vychází z forthu.

instrukční sady

značení

a - bezznaménková hodnota na datovém zásobníku
s:a - znaménková hodnota na datovém zásobníku
r:a - hodnota na návratovém zásobníku
input:word - slovo na vstupu
... - proměnný počet buněk/znaků

žravá

Snaží se spíš požrat parametry na zásobníku.

instrukcezásobníkový diagrampopis
nop( - )počká jeden takt
paměťové operace
store( data address - )uloží data na adresu
fetch( address - data)načte data z adresy
store-to( data index address - ) 
fetch-from( index address - data ) 
store-byte-to( index address data - ) 
fetch-byte-from( index address - data ) 
zásobníkové instrukce
lit( - data ) 
top( a - a ) 
second( a b - a b a ) 
third( a b c - a b c a) 
nip( a - ) 
swap( a b - b a ) 
pull( a b c - b c a ) 
tuck( a b c - c a b) 
store-local( a - r:a ) 
local( r:a - r:a a ) 
nip-local( r:a - ) 
aritmetické instrukce
inc( a - a+1 ) 
dec( a - a-1 ) 
plus( a b - a+b) 
minus( a b - a-b) 
mul( a b - a*b ) 
smul( s:a s:b - s:a*b ) 
bitové instrukce
not( a - 'a ) 
and( a b - a&b ) 
or( a b - a|b ) 
xor( a b - a^b ) 
lshift( a b - a<<b ) 
rshift( a b - a>>b ) 
porovnávací instrukce
is-lesser( a b - a a<b ) 
is-eleser( a b - a a<=b ) 
is-equal( a b - a a==b ) 
is-slesser( s:a s:b - s:a a<b) 
řídící instrukce
jump( - ) 
branch( flag - ) 
not-branch( flag - ) 
call( address - r:program-counter) 
ret( r:program-counter - ) 
instrukce interpretru
add-word( string - ) 
compile( - ) 
execute( - ) 
state( - state ) 
alloc( size - ) 
realloc( address size - address size ) 
free( address - ) 
immediate( - ) 
forced-compile( - ) 
tag( - tag ) 
reserve( size - size ) 
code( string - code ) 
token( string - token ) 
program-counter( - pc) 
read-word( input:word - string) 
read-stream( token input:... - ) 
reset( ... - ) 
tic( - timehigh timelow) 
tac( timehigh timelow - ) 
see( input:prefix - ) 
bye( - ) 
word-name( - name ) 
word-token( - token ) 
word-code( - code ) 
stack( - ) 
print( string - string ) 
export( - ) 

líná

Většinou ponechává parametry na zásobníku.

instrukcezásobníkový diagrampopis
nop( - )počká jeden takt
paměťové operace
store( address data - address data )uloží data na adresu
fetch( address - address data )načte data z adresy
store-to( address index data - address index data ) 
fetch-from( address index - address index data ) 
store-byte-to( address index data - address index data ) 
fetch-byte-from( address index - address index data ) 
zásobníkové instrukce
lit( - data ) 
top( a - a ) 
second( a b - a b a ) 
third( a b c - a b c a) 
nip( a - ) 
swap( a b - b a ) 
pull( a b c - b c a ) 
tuck( a b c - c a b) 
store-local( a - a r:a ) 
local( r:a - r:a a ) 
nip-local( r:a - ) 
aritmetické instrukce
inc( a - a+1 ) 
dec( a - a-1 ) 
plus( a b - a a+b) 
minus( a b - a a-b) 
mul( a b - a a*b ) 
smul( s:a s:b - s:a s:a*b ) 
bitové instrukce
not( a - 'a ) 
and( a b - a a&b ) 
or( a b - a a|b ) 
xor( a b - a a^b ) 
lshift( a b - a a<<b ) 
rshift( a b - a a>>b ) 
porovnávací instrukce
is-lesser( a b - a a<b ) 
is-eleser( a b - a a<=b ) 
is-equal( a b - a a==b ) 
is-slesser( s:a s:b - s:a a<b) 
řídící instrukce
jump( - ) 
branch( flag - ) 
not-branch( flag - ) 
call( address - r:program-counter) 
ret( r:program-counter - ) 
instrukce interpretru
add-word( string - string ) 
compile( - ) 
execute( - ) 
state( - state ) 
alloc( size - ) 
realloc( address size - address size ) 
free( address - ) 
immediate( - ) 
forced-compile( - ) 
tag( - tag ) 
reserve( size - size ) 
code( string - string code ) 
token( string - string token ) 
program-counter( - pc) 
read-word( input:word - string) 
read-stream( token input:... - ) 
reset( ... - ) 
tic( - timehigh timelow) 
tac( timehigh timelow - ) 
see( input:prefix - ) 
bye( - ) 
word-name( - name ) 
word-token( - token ) 
word-code( - code ) 
stack( - ) 
print( string - string ) 
export( - ) 

poslední změna 15.12.2010

komentáře

zatím bez komentářů





na začátek