:DC to także prąd stałydc 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żdzania), 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)