CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

アドレッシングモード

トランスピュータボードで1文字出力ができるように(おそらく1文字入力もできるはず)なったので、いつものボード開発手順通り原始モニタを載せることを考えてみます。

まずは1文字入力で取得したデータをメモリ上に並べていく処理です。改めてマニュアルでメモリアクセス関係の命令を見ると結構クセがあります。以下にメモリ、レジスタのアクセスする系統の命令を抽出しています。マニュアルの独特な処理内容の表記、たとえば:

とかは判りにくく Mem[addr]←v のように少し書き直しました

これらを使ってコーディングしようとしてますがかなり戸惑ってます。前にも書きましたが

1.汎用レジスタAreg1本

   基本的にスタックトップのAregしか直接アクセス、処理対象にならない?

2.参照すると値が破棄される

   ロードでAregに新しい値が上書きされる(正確にはpushされる)のは仕方ないですがインデックス引数として参照するだけでAregからpopされて値が破棄されてしまいます

3.Workspaceポインタの初期化ができない

   Wptrは値が常に保持されますがこれは「スタックポインタ」であるとされていてLDL/STLといったWptrレジスタ間接アドレッシングは動的メモリ確保に使うようです。ですがその初期値がどこにあるかわからず、AJWで増減はできますがSTLP(store local pointer)に相当する命令がありません。。。たぶんマニュアルを読み切れてないからと思いますが。