CPU実験室

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

NOP命令

遅延分岐で暗黙に実行されてしまう命令によって影響されないようにするには、分岐命令の直後はNOPにしてしまうことが手っ取り早いでしょう。

ところがこのAm29kプロセッサにはなんとNOP命令が存在しないのです。マニュアルにはそれも言及されていてNOP相当を実現するには演算結果やフラグに影響しないものを使えとされています。

 

f:id:O3I:20201126211512j:plain

推奨されるのは ASEQ 0x40,GR1,GR1   であるとされています。なんと複雑な・・・

 

とりあえず無条件分岐JMP、条件分岐JMPFの直後に挿入しておきました、#defineNOPエイリアスとしておくといいかもしれません

f:id:O3I:20201126211440j:plain

RISCは最小の命令セットを高速でぶん回すのが身上なわけでNOPの「何もしない」というのは怠惰=悪とみなされ排除されてしまったのでしょうか。

それにしてもNOP命令を持たないCPUというのは初めて見ました。

 

世界最初のマイクロプロセッサIntel4004にもちゃんとあるようです

f:id:O3I:20201126211558j:plain

 

自分がいじったことがあるものでは1ビットCPU:MC14500には16個しかインストラクションがありませんがそのうち2個はNOPです

 

f:id:O3I:20201126211618j:plain