RPN32 - Seznam instrukcí



Instrukční sada  •  Seznam instrukcí  •  Funkce API  •  Header  •  Příklady  •  Download




Název Mnemonický tvar Popis nebo odpovídající výraz v jazyku C Ovlivňuje/nastavuje
Manipulace s RPN stackem Drop Lift Last X
Enter number ENTER (viz popis manipulace Lift)      
Swap x<>y Přesun xY-registr, yX-registr    
Roll down Rdn (viz popis manipulace Roll down)    
Roll up Rup (viz popis manipulace Roll up)    
Clear X CLx Vynulování X-registru      
Clear stack CLST Vynulování všech registrů RPN stacku      
Last X LASTx Kopie lX-registr    
Operace s X-, Y- a Z-registrem RPN stacku Drop Lift Last X
Compose LCN LCN Sestavení Loop Control-number z trojice hodnot: xcounter, yfinal, zincrement 2  
Operace s X- a Y-registrem RPN stacku Drop Lift Last X
Addition + y + x
Subtraction y - x
Multiplication * y * x
Division / y / x
Division remainder RMD y % x
Disjunction OR y | x
Exclusive disjunction XOR y ^ x
Conjunction AND y & x
Shift left (N bytes) SLn y << x
Shift right (N bytes) SRn y >> x
Rotate left (N bytes) RLn Bitová rotace hodnoty y o x bitů vlevo
Rotate right (N bytes) RRn Bitová rotace hodnoty y o x bitů vpravo
Set bit SB y | 1 < x
Clear bit CB y & ~(1 << x)
Change bit XB y ^ 1 << x
Bit value B? (y & 1 << x) != 0
Operace s X-registrem RPN stacku Drop Lift Last X
Change sign CHS -x    
Complement NOT ~x  
Absolute value ABS Absolutní hodnota (respektuje druh provozu SIGNED resp. UNSIGNED)  
Signum SIGN Funkce znaménka (respektuje druh provozu SIGNED resp. UNSIGNED)  
Shift left (1 byte) SL x << 1  
Shift right (1 byte) SR x >> 1  
Rotate left (1 byte) RL Bitová rotace hodnoty x o 1 bit vlevo  
Rotate right (1 byte) RR Bitová rotace hodnoty x o 1 bit vpravo  
Mask left MASKL Bitová maska šíře x od nejvyššího bitu
(1 << x) - 1 << wide - x
 
Mask right MASKR Bitová maska šíře x od nejnižšího bitu
(1 << x) - 1
 
Extension from byte CONVB Znaménkové rozšíření hodnoty x bitové šíře Byte (8 bitů)  
Extension from word CONVW Znaménkové rozšíření hodnoty x bitové šíře Word (16 bitů)  
Left justify LJ Hodnota x je posunuta vlevo o tolik bitů, kolik je třeba pro umístění prvního nenulového bitu zleva do MSB. Tento počet bitů je umístěn do X-registru, v Y-registru je výsledná hodnota (Viz údaj v sloupci Drop) -1
Counter of LCN COUNT Hodnota v x je chápana jako Loop Control-number. Z ní je „vypreparována“ složka counter  
Number of bits NB Počet nastavených bitů v hodnotě x  
Word size WSIZE Hodnota v x v rozsahu 0..32 určuje bitovou šířku (viz též IWSIZE)
Allocate local regs PUSH Alokace lokálních registrů v počtu daném hodnotou v x (viz též IPUSH a také flag č. 27)
Flags Drop Lift Last X
Set flag SF f
SF @r
SF @s
Nastavení    
Clear flag CF f
CF @r
CF @s
Shození    
Change flag XF f
XF @r
XF @s
Změna stavu    
Flag value F? f
F? @r
F? @s
Přenesení hodnoty flag do X-registru    
Operace s paměťovými registry Drop Lift Last X
Store STO r
STO @r
STO s
STO @s
Uložení x do paměťového registru    
Storage addition STO+ r
STO+ @r
STO+ s
STO+ @s
Přičtení x k hodnotě paměťového registru    
Storage subtracion STO- r
STO- @r
STO- s
STO- @s
Odečtení x od hodnoty paměťového registru    
Storage multiplication STO* r
STO* @r
STO* s
STO* @s
Vynásobení hodnoty paměťového registru hodnotou x    
Storage division STO/ r
STO/ @r
STO/ s
STO/ @s
Vydělení hodnoty paměťového registru hodnotou x    
Storage flags STO F Uložení x do registru flags    
Recall RCL r
RCL @r
RCL s
RCL @s
Vyčtení obsahu paměťového registru do X-registru    
Recall addition RCL+ r
RCL+ @r
RCL+ s
RCL+ @s
Přičtení hodnoty paměťového registru k x    ρ 
Recall subtracion RCL- r
RCL- @r
RCL- s
RCL- @s
Odečtení hodnoty paměťového registru od x    ρ 
Recall multiplication RCL* r
RCL* @r
RCL* s
RCL* @s
Vynásobení x hodnotou paměťového registru    ρ 
Recall division RCL/ r
RCL/ @r
RCL/ s
RCL/ @s
Vydělení x hodnotou paměťového registru    ρ 
Recall flags RCL F Vyčtení obsahu registru flags do X-registru    ρ 
Exchange x<> r
x<> @r
x<> s
x<> @s
Záměna obsahu X-registru a paměťového registru    
Increment INC r
INC @r
INC s
INC @s
Přičtení 1 k obsahu paměťového registru    ι 
Decrement DEC r
DEC @r
DEC s
DEC @s
Odečtení 1 od obsahu paměťového registru    ι 
Větvení programu Drop Lift Last X
Label LBL b Návěští definuje místo, na které se běh programu bezpodmínečně nastaví vykonáním instrukcí GTO resp. XEQ    
Go to GTO b
GTO @r
GTO @s
Skok na místo v programu označené instrukcí LBL se stejným operandem b, který obsahuje tato instrukce nebo registr r resp. s    
Execute XEQ b
XEQ @r
XEQ @s
Volání podprogramu. Totéž co instrukce GTO, navíc je uložena návratová adresa adresující instrukci následující za instrukcí XEQ. Podprogram by měl končit instrukcí RTN, která skok na návratovou adresu vykoná    
Return RTN Návrat z podprogramu. Viz instrukce XEQ    
Equal to x==0?
x==y?
Porovnání x s nulou resp. s y. Je-li podmínka testu splněna, následující instrukce je provedena. V opačném případě je následující instrukce přeskočena    
Not equal to x!=0?
x!=y?
   
Less then x<0?
x<y?
   
Less or equal x<=0?
x<=y?
   
Greater than x>0?
x>y?
   
Greater or equal x>=0?
x>=y?
   
BIT SET test BS? Test bitu určeného hodnotou x v hodnotě y. Je-li bit nastaven, následující instrukce je provedena. V opačném případě je následující instrukce přeskočena  
BIT SET test and clear BS?C Totéž co instrukce BS?, navíc je testovaný bit vždy shozen  
BIT CLEAR test BC? Test bitu určeného hodnotou x v hodnotě y. Je-li bit shozen, následující instrukce je provedena. V opačném případě je následující instrukce přeskočena  
BIT CLEAR test and clear BC?C Totéž co instrukce BC?, navíc je testovaný bit vždy shozen  
FLAG SET test FS? f
FS? @r
FS? @s
Test flagu určeného operandem f nebo obsahem registrů r resp. s. Je-li flag nastaven, následující instrukce je provedena. V opačném případě je následující instrukce přeskočena    
FLAG SET test and clear FS?C f
FS?C @r
FS?C @s
Totéž co instrukce FS?, navíc je testovaný flag vždy shozen    
FLAG CLEAR test FC? f
FC? @r
FC? @s
Test flagu určeného operandem f nebo obsahem registrů r resp. s. Je-li flag shozen, následující instrukce je provedena. V opačném případě je následující instrukce přeskočena    
FLAG CLEAR test and clear FC?C f
FC?C @r
FC?C @s
Totéž co instrukce FC?, navíc je testovaný flag vždy shozen    
Increment and skip if greater than ISG r
ISG @r
ISG s
ISG @s
Operand obsahuje/adresuje Loop Control-number. Je-li counter po zvýšení o interval větší než final, následující instrukce je přeskočena. V opačném případě je následující instrukce provedena    
Decrement and skip if less than or equal to DSE r
DSE @r
DSE s
DSE @s
Operand obsahuje/adresuje Loop Control-number. Je-li counter po snížení o interval menší nebo rovnen final, následující instrukce je přeskočena. V opačném případě je následující instrukce provedena    
Increment and skip if zero ISZ r
ISZ @r
ISZ s
ISZ @s
Je-li hodnota obsažená/adresovaná operandem po zvýšení o 1 rovna nule, následující instrukce je přeskočena. V opačném případě je následující instrukce provedena    
Decrement and skip if zero DSZ r
DSZ @r
DSZ s
DSZ @s
Je-li hodnota obsažená/adresovaná operandem po snížení o 1 rovna nule, následující instrukce je přeskočena. V opačném případě je následující instrukce provedena    
Direktivy Drop Lift Last X
Stop executing STOP Zastavení běhu programu. Funkce rpn32_run() ukončí svoji činnost s návratovou hodnotou RPN32_RTNVAL_STOP      
Pause PSE Vykonává-li instrukce programu funkce rpn32_run() s argumentem __type obsazeným hodnotou RPN32_RUN_CB_TYPE_PSE je činnost této instrukce realizována voláním callbacku. Další popis viz RPNPROC      
Mode signed SGN Nastavení druhu provozu SIGNED. Hodnoty jsou zpracovávány jako znaménkové (ve dvojkovém doplňku)      
Mode unsigned UNS Nastavení druhu provozu UNSIGNED. Hodnoty jsou zpracovávány jako bezznaménkové      
Bit wide WIDE B
WIDE W
WIDE D
Nastavení šířky slova podle operandu: Byte (8 bitů), Word (16 bitů), Double word (32 bitů). Instrukce ponechána z důvodu kompatibility s RPNPROC. Vhodnější je použití IWSIZ nebo WSIZE      
Word size IWSIZ n Hodnota operandu v rozsahu 0..32 určuje bitovou šířku (viz též WSIZE)      
Allocate local regs IPUSH n Alokace lokálních registrů v počtu daném hodnotou operandu v rozsahu 1..32767 (viz též PUSH a také flag č. 27)      
Release local regs POP Uvolnění lokálních registrů      
  Drop Lift Last X

Poznámky a vysvětlivky

Termín program, který se prolíná celou tabulkou seznamu instrukcí znamená vždy RPN program.

Operandy instrukcí jsou v tabulce seznamu instrukcí zastoupeny různými znaky. Jejich význam vysvětluje odstavec názvosloví instrukční sady.

Některé INSTRUKCE jsou barevně vyznačené. Jsou to ty, které přináší RPN32 a v původním řešení RPNPROC se nevyskytovaly.

U skupiny instrukcí RCL kombinovaných s aritmetickými funkcemi je ve sloupci Last X znak  ρ  (řecké písmeno ró). Také u instrukcí INC a DEC je ve sloupci Last X neočekávaný znak  ι  (řecké písmeno ióta). Vliv činnosti těchto instrukcí na obsah registru LASTx je podmíněný aktuálním obsahem flags č. 28 resp. 29. Detaily v úvodních kapitolách.

Instrukce porovnání obsahu X-registru RPN stacku v sekci Větvení programu jsou zakončeny znakem ?. V původním řešení RPNPROC tyto instrukce otazník neobsahovaly. K rozporu přesto nedochází: RPN32 akceptuje obojí notaci.