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 x→Y-registr, y→X-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 l→X-registr | • | ||
Operace s X-, Y- a Z-registrem RPN stacku | Drop | Lift | Last X | ||
Compose LCN | LCN | Sestavení Loop Control-number z trojice hodnot: x→counter, y→final, z→increment | 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 |
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.