現在出力基数をスタックに積む。16を16進数で出すので"10"が表示されてしまう。"10"(実際には10(2)です。入出力基数に別の数をぞれぞれ指定できますが、混乱の元なので、どちらかは10進数にしておくか、両方同じ基数にすることをおすすめします。ここまでは、なんてことはないタダのRPN計算機。dcのポイントは"文字列"と"レジスタ"とマグロ...もとい、"マクロ"。なんで計算機なのに文字列があるのかとか、まぁ、色々あるでしょうが、便利です。文字列とりあえず文字列の例。適当に文字を打つと当然コマンド解釈されエラーになる("o"は出力基数変換コマンドなのでエラーが変わる。value演算ができないなら何のためにあるのか、というと、一つはスクリプトにしたときの出力用。なによりマクロのため。いうことで詳細はマクロの項で。レジスタスタックだけでなくレジスタも持ってるdc。スタックは1だらけ1111s[レジスタ名]で保存、l[レジスタ名]で読み込みです。manpageによると「少なくとも256個のメモリレジスタを持っています」だそうです。個人的に非ASCIIなレジスタへのアクセス方法が気になるのですが...。実はレジスタはそれ自信がスタックだったりもします。S[レジスタ名]は、メインスタックをpopして、レジスタのスタックにpushします。レジスタaに、2もpushしてみた。レジスタスタックの先頭をロードするには先ほどの"l"を使います。"l"はレジスタスタックを変更しないのでなんど使っても同じ値がでます。先頭要素は3になってしまう。"L"はpopする"l"。レジスタaからpopして、その値をメインスタックにpushします。"L"はレジスタスタックをpopするので使う度に別の値がでます。その代わりメインスタックはたっぷり。("l"の分だけ複製されている13322マクロおまちかね。