[761] Re:感謝状
投稿者:本多
2007/02/20 02:13:25
>>っていうか、対象ハードウエア(自社製ASIC)が構造上どない頑張ってもスタック構造を処理できないので(@_@)
>すいません、そういうCPUは触ったことないので質問です。
このハードウエアはCPUとは呼べないでしょうね。
今どきのPCの周辺機器のほうがよほど複雑なプログラム実行が出来そうです(^^;)
>eval.cの関数をwrite()に置き換えたとのことなので、そこで吐いているのはpush/popだと
>思っていましたが、そうでもないんでしょうか?
そうでもないんですわ。push/popなんて命令も用意してもらえてません(T-T)
だいたい、レジスタに格納した番地のメモリにアクセスすると言う命令すらない(T-T)
固定番地へのアクセスのみです。
だからメモリの上から順にグローバル変数を割り付けていくと言うことしてます。
(っていうか、メモリも2kだけですし...)。
JMP命令はあるけど、固定JMPのみ、というわけで、関数呼び出しも再起呼び出し禁止、
関数の型はvoid func(void)のみって感じになりました。
コンパイラがwrite()で吐いてるのは
「メモリからレジスタ1へのコピー命令(に対応する数値)」とか
「レジスタ aとレジスタ bの演算命令(に対応する数値)」とか
「特殊機能を実行する機械語(に対応する数値)」とかを
データファイルに書き出してます。
実際、(PCではないのですが)本当にあるシステムの周辺機器なので
メインのCPU(こっちは汎用CPU!)上で動作するプログラムが
作ったデータファイルからデータを読み込んで対象ハードウエアに書き込み、
対象ハードウエアを起動するという形を取ります。