Následujcí ukázky ilustrují především alternativní způsoby čtení posloupnosti RPN instrukcí.
Výpočet dvojkového doplňku hodnoty v X-registru RPN stacku:
# cat complement.rpn uns wide w lbl 29 not 1 + # # rpnproc -l 32 complement.rpn FILE: complement.rpn * * * LIST * * * ###:0000 UNS ###:0001 WIDE W 029:0000 LBL 029 029:0001 NOT 029:0002 1 029:0003 + * * * EXEC * * * REGT: 0x00000000 0 REGZ: 0x00000000 0 REGY: 0x00000000 0 REGX: 0x00000020 32 RESULT: 0x0000ffe0 65504 # # rpnproc -t -s29 32 complement.rpn FILE: complement.rpn TRACE: 0x00000020 32: 029:0001 NOT TRACE: 0xffffffdf -33: 029:0002 1 TRACE: 0x00000001 1: 029:0003 + RESULT: 0xffffffe0 -32 #
Výpočet příkladu
1 + 2 * 3 = 7
# rpnproc 1 2 3 - FILE: <stdin> * + RESULT: 0x00000007 7 #Pozn.: Pro spustění výpočtu, o jehož ukončení informuje výpis RESULT:, je třeba vstupní soubor (zde konkrétně stdin) ukončit. Po zadání posledního řádku s instrukcí + ukončení obstará stisk Ctrl-D.
Výpočet hodnoty x podle vzorce
x = (a + b * c) * 2 + ckde:
a = 1 b = 2 c = 3
# rpnproc -a. -n= "-i " -l -t 1 2 3 "%sto 0 %* %+ %2 %* %rcl+ 0" FILE:Je zřejmé, že znak % uvozující RPN instrukce sdružené v řetězci odkazovaném pointerem argv[6] je oddělovačem jednotlivých instrukcí. Mezery před ním nejsou povinné, mezery za ním mohou být. Korektními zadáními jsou tedy i tyto zápisy:* * * LIST * * * ===.0000 STO 000 ===.0001 * ===.0002 + ===.0003 2 ===.0004 * ===.0005 RCL+ 000 * * * EXEC * * * REGT: 0x00000000 0 REGZ: 0x00000001 1 REGY: 0x00000002 2 REGX: 0x00000003 3 TRACE: 0x00000003 3: ===.0000 STO 000 TRACE: 0x00000003 3: ===.0001 * TRACE: 0x00000006 6: ===.0002 + TRACE: 0x00000007 7: ===.0003 2 TRACE: 0x00000002 2: ===.0004 * TRACE: 0x0000000e 14: ===.0005 RCL+ 000 RESULT: 0x00000011 17 #
# rpnproc 1 2 3 "%sto 0%*%+%2%*%rcl+ 0" # rpnproc 1 2 3 "% sto 0 % * % + % 2 % * %rcl+ 0 " #Důležitá je přehlednost použitého zápisu. Záleží pouze na vkusu uživatelově.