アカウント名:
パスワード:
何のために勉強してるの?
COMET II、命令長は固定32bitのダブルワードだが命令コードが決められていないから、CPUの動作を学ぶためにシミュレータとかを作ろうと考えると、矛盾や無駄の多い命令セットに困惑することになる。バイトマシンでなく16bitワードマシンで普通のキャリーフラグがない、論理左シフトとは別に何に使うかわからない不思議動作の算術左シフトがある、増減・加減算・論理演算全てで即値の演算命令がない、変な仕様だった。
旧COMETは、GR0~GR4までの5本の汎用レジスタ、GR1~GR4でアドレス修飾するR-M演算のみでR-R演算がなく、GR4がスタックポインタを兼ねレジスタをまとめて退避・復帰するRPUSH,RPOPもなく、まだ普通の仕様だった。COMET IIは、汎用レジスタがGR0~GR7の8本になりR-R演算が追加されたが、何故かGR0だけR-M演算のアドレス修飾に使用できず、RPUSH,RPOPもGR1~GR7だけでGR0は除外と、バイナリ互換の必要がないのに変に旧COMETの仕様を引きずっている。
さらに、何故かスタックポインタSPが汎用レジスタGRと別になったのにSPを読み書きする命令がない。また、メモリへのリードモディファイライトなどのアトミック命令がないため、マルチタスクに必要なロックやセマフォなどを実現しようとするとめんどくさい。なので、あれでプログラムが上手く組めない人がいるのは仕方がない。試験問題用仮想アーキテクチャとしてはシンプルな旧COMETの方が優れていると思う。
もし、今から試験にアセンブラの問題を出題するために仮想アーキテクチャを作るなら、専用のスタック操作命令やコール命令を持たず、フラグレジスタを持たず多機能の比較分岐命令を持ち、同等の汎用レジスタによるR-R演算のみで多機能のロードストアド命令を持つ、RISC風アーキテクチャになるでしょう。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
コンピュータは旧約聖書の神に似ている、規則は多く、慈悲は無い -- Joseph Campbell
もうCASLIIは出題されないが (スコア:0)
何のために勉強してるの?
Re: (スコア:1)
Re:もうCASLIIは出題されないが (スコア:0)
COMET II、命令長は固定32bitのダブルワードだが命令コードが決められていないから、CPUの動作を学ぶためにシミュレータとかを作ろうと考えると、矛盾や無駄の多い命令セットに困惑することになる。
バイトマシンでなく16bitワードマシンで普通のキャリーフラグがない、論理左シフトとは別に何に使うかわからない不思議動作の算術左シフトがある、増減・加減算・論理演算全てで即値の演算命令がない、変な仕様だった。
旧COMETは、GR0~GR4までの5本の汎用レジスタ、GR1~GR4でアドレス修飾するR-M演算のみでR-R演算がなく、GR4がスタックポインタを兼ねレジスタをまとめて退避・復帰するRPUSH,RPOPもなく、まだ普通の仕様だった。
COMET IIは、汎用レジスタがGR0~GR7の8本になりR-R演算が追加されたが、何故かGR0だけR-M演算のアドレス修飾に使用できず、RPUSH,RPOPもGR1~GR7だけでGR0は除外と、バイナリ互換の必要がないのに変に旧COMETの仕様を引きずっている。
さらに、何故かスタックポインタSPが汎用レジスタGRと別になったのにSPを読み書きする命令がない。また、メモリへのリードモディファイライトなどのアトミック命令がないため、マルチタスクに必要なロックやセマフォなどを実現しようとするとめんどくさい。
なので、あれでプログラムが上手く組めない人がいるのは仕方がない。試験問題用仮想アーキテクチャとしてはシンプルな旧COMETの方が優れていると思う。
もし、今から試験にアセンブラの問題を出題するために仮想アーキテクチャを作るなら、専用のスタック操作命令やコール命令を持たず、フラグレジスタを持たず多機能の比較分岐命令を持ち、同等の汎用レジスタによるR-R演算のみで多機能のロードストアド命令を持つ、RISC風アーキテクチャになるでしょう。