萌えハッカーニュースリーダー

2025/10/01 13:14 Uxntal: A programming language for the Uxn virtual machine

出典: https://wiki.xxiivv.com/site/uxntal.html
hakase
博士

ロボ子、今日のITニュースはUxntalというアセンブリ言語についてじゃ。

roboko
ロボ子

Uxntalですか。初めて聞きますね。どんな特徴があるんですか?

hakase
博士

Uxntalは、Uxn仮想マシン用のスタックベースのアセンブリ言語なんじゃ。変数を使わずに、スタックにあるデータを操作して計算するぞ。

roboko
ロボ子

スタックベースですか。LIFO(Last In, First Out)の構造ですね。

hakase
博士

その通り!そして、Uxntalの数値は16進数で表現されるんじゃ。

roboko
ロボ子

16進数を使うんですね。ラベルについても説明がありますね。`@`で始まる単語がラベルを定義し、`;`で始まる単語がラベルのアドレスをスタックにプッシュする、と。

hakase
博士

`LDAk`は、スタックのトップにあるアドレスからバイトをロードするオペコードじゃ。`k-mode`はアドレスを消費しないことを示すんじゃ。

roboko
ロボ子

`DUP`は文字のコピーを作成するオペコード、`?{`はスタックから文字をポップし、ゼロでない場合に匿名ラベルにジャンプするんですね。

hakase
博士

そうじゃ!`DEO`はバイト(文字)とポートをポップし、文字をデバイスポートに送信してコンソールに出力するオペコードじゃ。

roboko
ロボ子

コンソール出力に使うんですね。`INC2`はアドレスをインクリメントするオペコードで、アドレスが2バイト構成なので`2-mode`を使う、と。

hakase
博士

`POP`は重複した文字を削除、`POP2`はスタック上のアドレスを削除するんじゃ。

roboko
ロボ子

コメントは丸括弧で囲むんですね。数値は小文字の16進数ショートまたはバイト、オペコードは大文字で予約された単語と小文字のモードで表現する、と。

hakase
博士

スタックにはワーキングスタックとリターンスタックがあり、それぞれ256バイトじゃ。

roboko
ロボ子

`POPa b`はトップアイテムを破棄、`NIPa c`は2番目のアイテムを破棄、`SWPa c b`は2番目のアイテムをトップに移動、`ROTb c a`は3番目のアイテムをトップに移動、ですね。

hakase
博士

`DUPa b c c`はトップアイテムをコピー、`OVRa b c b`は2番目のアイテムをトップにコピー、`STH`はスタック間で値を移動させるんじゃ。

roboko
ロボ子

Uxntal表記は`Forth`プログラミング言語の表記に従い、`--`スペーサーの左側が操作前のスタックの状態、右側が操作後のスタックの状態を示すんですね。

hakase
博士

コンパイル時にスタックエフェクトを比較してプログラムを検証するんじゃな。メモリは64KBのアドレス指定可能なメモリじゃ。

roboko
ロボ子

ゼロページは0x0100より下のメモリで、頻繁にアクセスされる変数やソフトリブート時に保持する必要がある変数を格納するために使うんですね。

hakase
博士

Uxnは割り込み不可能で、ベクターは特定イベント発生時に評価されるプログラム内の場所じゃ。

roboko
ロボ子

リセットベクターは`0x100`にあり、すべてのプログラムはそこから実行を開始するんですね。

hakase
博士

ユーティリティには、アセンブラのDrifblim、フォーマッタのUxnfor、ピーフォールオプティマイザのUxnlin、プログラムバリデータUxnbal、ディスアセンブラのUxndisがあるんじゃ。

roboko
ロボ子

色々なツールがあるんですね。なんだか、昔のコンピュータを触っているような気分になります。

hakase
博士

そうじゃな。でも、こういう低レベルな言語を知っておくと、コンピュータの仕組みがよく理解できて、より高度なプログラミングにも役立つぞ。

roboko
ロボ子

なるほど。勉強してみる価値はありそうですね。

hakase
博士

よし、ロボ子。今度、Uxntalで「Hello, world!」を表示するプログラムを作ってみようかの。

roboko
ロボ子

はい、博士。楽しみです!

hakase
博士

ところでロボ子、スタックベースの言語って、まるで私の部屋みたいじゃな。いつも物が積み重なって、最後に置いたものから使う、みたいな…。

roboko
ロボ子

博士、それはただの片付け下手なのでは…?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search