Re: 自作CPU設計中 大は小を兼ねるかなと思い切ったのですが、やっぱりI/Oとか困りますし、8bitメモリアクセスがないと不便でしたね。 内部バス制御と命令デコーダのシンプルさ、メモリコピーとスタックの作り易さ、サブルーチンのレジスタとPCの退避 ・復帰コストなど、以下の命令とどちらがよいか、悩んでいました。 Pn R1:R0..R15:R14 1111:0xxx ST [BP+int8] = Pn 1111:1xxx LD Pn = [BP+int8] どうせACは頻繁に破壊されるから、CPI命令を削除してSTX,LDX命令に変更することも考えていました。 または、LDI #n (0001:bbbb) はPDP8風に、ANI #0,ADI #n (0100:0000,0010:bbbb) に置き換え可能ですが、 LDI命令がないのは現代の命令セットとして変態なので、できれば避けたい(笑) LDI命令がない場合、元々CF無しADD,SUB命令がないため、STA,LDA命令でCFを保持するかクリアするか悩んで いたのですが、さらにSTA命令でACをクリアするかも悩みどころ。 他には、INX,DCX命令はBPの値でCF無変更,ZF変更にする予定ですが、STX,LDX命令でも同じにして平気かとか、 XCH命令では、どちらの値でZF変更をするべきか変更しないべきとか、フラグは奥が深い。 2024-06-09 22:21 — enaka 返信
Re: 自作CPU設計中
大は小を兼ねるかなと思い切ったのですが、やっぱりI/Oとか困りますし、8bitメモリアクセスがないと不便でしたね。
内部バス制御と命令デコーダのシンプルさ、メモリコピーとスタックの作り易さ、サブルーチンのレジスタとPCの退避
・復帰コストなど、以下の命令とどちらがよいか、悩んでいました。
Pn R1:R0..R15:R14
1111:0xxx ST [BP+int8] = Pn
1111:1xxx LD Pn = [BP+int8]
どうせACは頻繁に破壊されるから、CPI命令を削除してSTX,LDX命令に変更することも考えていました。
または、LDI #n (0001:bbbb) はPDP8風に、ANI #0,ADI #n (0100:0000,0010:bbbb) に置き換え可能ですが、
LDI命令がないのは現代の命令セットとして変態なので、できれば避けたい(笑)
LDI命令がない場合、元々CF無しADD,SUB命令がないため、STA,LDA命令でCFを保持するかクリアするか悩んで
いたのですが、さらにSTA命令でACをクリアするかも悩みどころ。
他には、INX,DCX命令はBPの値でCF無変更,ZF変更にする予定ですが、STX,LDX命令でも同じにして平気かとか、
XCH命令では、どちらの値でZF変更をするべきか変更しないべきとか、フラグは奥が深い。