KUE-CHIP2(キューチップ): Kyoto University Education Chip 2
京都大学と京都高度技術研究所でコンピュータ教育のための教材として開発された 8bit のマイクロプロセッサ。 コンピュータの基本構造や動作原理の理解が容易なように、極めて単純なアーキテクチャと最低限の命令セットで構成されている。 またレジスタの内容を外部から観測・制御でき、さらにクロックフェーズ単位での命令の実行が可能である。
以上、ガッコでもらった「情報科学実験 IA マイクロプロセッサ実験テキスト」より。 (ただし一部表現を変えてある。)
こんなのを実験でやってるわけです。 (実際は、実機を使わずにエミュレータを使用してるわけですが。) ちなみに KUE です。 KEU じゃないです。
知人より質問を受けたため、メールで回答した。 以下はその写しである。
まずこれらアセンブリ言語で書かれた命令群は アセンブルを行い機械語等へと変換される。 今やってるのだとアセンブリ命令は 1byte か 2byte の機械語になる。 例: LD IX, ACC → 68 ( 1byte ) LD ACC, [8D] → 64 8D ( 2byte ) これは 58, 61 ページの表を参照。(見なくていいけど。) ここまで OK ? 次に、CALL / RET で使用している BA について。 これは BA XX で 「Program Counter を XX にする」 という命令。 PC が変更されれば実行される場所が変わるので、 メモリにロードされたプログラムの中を自由に移動できるわけだ。 さて、それではどこに移動するか。 CALL は問題ない。 サブルーチンが書かれているアドレスに飛べばいいだけ。 問題は RET 、サブルーチンから戻る際。 もちろん戻る際はそのサブルーチンが「呼ばれた場所」へ戻る。 ただしホントに呼ばれた場所に戻っちゃうと もっかいサブルーチンを呼び始めるので、 正確には「呼ばれたトコの次の場所」へ戻る必要がある。 その「呼ばれたトコの次の場所」はスタックにつめておく。 さーて、ここからが本題。 BA XX で移動はできるんだが、 この XX はあらかじめソースコードに書いておかなくてはならない。 アセンブリには変数ってのが存在しないので、 具体的な数字を書かにゃならんのだ。 ところがサブルーチンはどこから呼ばれるのかはわからない。 (一般に、複数箇所から何度も呼び出す。) 具体的に数値を書いておく事なんて不可能だし、 かといって呼ばれる箇所に対応した数だけのサブルーチンを書くのはめんどうだ、 っていうかわざわざサブルーチンにする意味がねぇ。 そこでウルトラ C な技をしてみる。 ST 命令でメモリやレジスタの値を書き換える事ができるので、 メモリにロードされたプログラム自身を書き換える という事をやってのける。 もちろん、ここで「書き換える」のは BA XX の XX の部分。 ここで重要なのが、23 ページの 実現例にも出てくる CA というもの。 これは Current Address を意味する(と思う)。 アセンブルすると、そのコードが出力されたアドレスに置き換わるわけだ。 また CA+6 なら、そのアドレスに 6 を加算した値に置換される。 と、ゆーわけで。 結論としては ST ACC, (CA+3) → 75 ?? BA XX → 30 XX とする事で、 ?? (=ST 命令のアドレスの 3byte 先の XX ) を ACC の値で書き換える という事になる。 これであらかじめ ACC にスタックから戻る先のアドレスをぶち込んどきゃ OK 。 ちなみに〜、レジスタ内容を破壊しない「改訂版」のコードでは、 上記を読めばわかるものと思うが、 CA に加算する値は変わるので注意。
ちょっと気になったので補足。 > 結論としては > > ST ACC, (CA+3) → 75 ?? > BA XX → 30 XX > > とする事で、 > > ?? (=ST 命令のアドレスの 3byte 先の XX ) を ACC の値で書き換える > > という事になる。 CA の内容は、機械語の 75 のアドレスになる。 だからアドレスはそれぞれ CA = 75 CA+1 = ?? CA+2 = 30 CA+3 = XX を指す。
いずれ column の方で公開したい。 KUE-CHIP2 に関する情報が、Web 上にあまり見受けられなかったので。
書く時間がないのでそのうちまとめて。
と、特にまとめずに一般的な「話題」として扱っていきます。 要はコンテンツとしては潰れるけど今後とも変わらずによろしく、と。
っていうか東大助手だったんだ ...。
あと ZAKZAK の記事にWinny 東大助手のオタクな素顔なんてのが。 作者の履歴とか人物像なんかに触れてます。 近所の住人の話から「オタクっぽい」という結論を得ているが、『挨拶しても頭を下げるだけ』のどこがオタクっぽいんだろう。 ただの「駄目な現代人」じゃねぇか。
参考: 閉鎖済みの作者サイト