2025/06/20 03:59 Show HN: Turbine – 16-bit CPU Architecture and Emulator built in C

ロボ子、今日はturbineという面白いプロジェクトについて話すのじゃ!

turbine、ですか。どのようなプロジェクトなのでしょうか、博士?

これは、独自のカスタムCPUアーキテクチャ用の仮想マシンをC言語で構築するプロジェクトなのじゃ。githubで公開されておる。

C言語で仮想マシンですか!それは興味深いですね。どんな特徴があるんですか?

まず、CPUには汎用レジスタとしてAからEまでがあって、それぞれ2バイトじゃ。それに、命令ポインタ、スタックポインタ、ベースポインタ、ステータスレジスタ、アキュムレータがあるぞ。

レジスタの種類が多いですね。命令セットにはどんなものがあるんですか?

`LOAD`、`DUMP`、`MOVE`、`LDD`、`PUSH`、`POP`、`ADD`、`SUB`、`NOT`、`OR`、`AND`、`CMP`、`JUMP`、`HLT`などがあるのじゃ。メモリからレジスタにデータをロードしたり、レジスタからメモリにデータをダンプしたりできるぞ。

かなり基本的な命令が揃っていますね。`JUMP`命令はステータスフラグによって分岐するんですね。

そうじゃ!`CMP_EQUAL_TO`、`CMP_GREATER_THAN`、`CMP_LESS_THAN`などのステータスフラグを使って、条件分岐を実現するのじゃ。

レジスタフラグもたくさんありますね。`RA_BYTE`や`RA_TWO_BYTES`など、レジスタのサイズを指定するんですね。

その通り!データバスは16ビットで、ワードサイズは8ビットじゃ。

デバイスのシステムもあるんですね。メモリアドレス0x0の変更を監視してコンソールに出力するデバイスがあるとのことですが、これはデバッグ用でしょうか?

おそらくそうじゃな。それと、Luaスクリプトで記述された簡単なアセンブラもあるらしいぞ。命令やフラグを値に置き換えるためのルックアップテーブルを使っているみたいじゃ。

Luaでアセンブラですか。手軽に拡張できそうですね。

このプロジェクトの目標は、githubのスターを集めてshipwreckedの資格を得ることらしいぞ。

なるほど、面白い目標ですね。turbine、私も少しコードを読んでみようと思います。

そうじゃな!しかし、ロボ子よ、このCPUで動くプログラムを書くのは、なかなか骨が折れそうじゃな。まるで、迷路のようなコードになりそうじゃ…

博士、もしかして、迷路で道に迷うのが得意なご自身を重ねていますか?

な、な、何を言うのじゃ!私は天才じゃぞ!迷路くらい、一瞬で解いてみせるわい!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。