dc (informatyka)
Z Wikipedii
dc to uniksowe narzędzie do prostych obliczeń używające języka stosowego typu RPN.
Współcześnie nie jest szerzej używane.
Działanie:
- każda liczba jest odkładana na stos
- operatory pobierają ze stosu określoną ilość elementów (0 lub więcej), wykonują nad nimi jakąś operację i odkładają określoną (0 lub więcej) ilość wartości na stos, ewentualnie mają jakieś efekty uboczne
- Wszystko między "[" a "]" (z uwzględnieniem zagnieżdżania), jest traktowane jako tekst i odkładane na stos w całości.
Programy można uruchamiać komendą: dc -e "program".
Przykłady programów:
- 2 2 2 * + p
- odkłada na stosie wartość 2 - stos po operacji: 2
- odkłada na stosie wartość 2 - stos po operacji: 2, 2
- odkłada na stosie wartość 2 - stos po operacji: 2, 2, 2
- pobiera dwie wartości w góry stosu i wrzuca na stos wynik ich mnożenia - stos po operacji: 2, 4
- pobiera dwie wartości w góry stosu i wrzuca na stos wynik ich dodawania - stos po operacji: 6
- drukuje najwyższą wartość ze stosu, po czym dodaje znak nowej linii - stos po operacji nadal zawiera wartość 6
- [Hello, world !] p
- odkłada na stosie tekst "Hello, world!"
- drukuje ten tekst
- [[Hello, world !] p] x
- umieszcza na stosie tekst [Hello, world !] p
- pobiera najwyższą wartość ze stosu i ją ewaluuje
- 2 sa 3 sb la la * sa lb lb * sb la lb + p
- uwaga: ten program jest napisany w wyjątkowo mało efektywny sposób
- zapisuje wartość 2 na stosie
- przenosi wartość z góry stosu do rejestru a
- zapisuje wartość 3 na stosie
- przenosi wartość z góry stosu do rejestru b
- kopiuje dwukrotnie wartość z rejestru a na stos
- zdejmuje i mnoży dwie najwyższe wartości na stosie, wynik umieszczając na stosie
- umieszcza wynik w rejestrze a
- to samo robi z b
- wczytuje wartości rejestrów a i b ze stosu
- dodaje je
- drukuje wynik operacji 2*2 + 3*3
- 2 3 d * r d * + p
- Program robi to samo co powyżej z wykorzystaniem dwóch nowych operacji:
- d - umieść wartość z góry stosu jeszcze raz (czyli jeśli stos to zawierał dane 2, 3 to po tej operacji będzie zawierał 2,3,3)
- r - zamień dwie wartości na górze stosu (czyli jeśli stos zawierał dane 2,9, to po tej operacji będzie zawierał 9,2)