自作CPU(verilog版)アセンブラ作成 プログラミング言語AWK第二版がでた記念に、AWKで簡易アセンブラを書いてみました。 まだ170行しかなくラベルすら使えませんが、拡張機能のない素のAWKでも動くはず。 https://d.kuku.lu/srd3msype 今岡氏のDL166(https://monoist.itmedia.co.jp/mn/series/33743/)を参考にCPU自体も書き換え160行まで減らしました。 ステージデコードを簡略化し、回路規模と実行サイクルも削減。そのため、INX DCXとCLC SECのオペコードを入れ替えました。 新旧ブロック図を見比べると一目瞭然。 2clk NOP HLT CLC SEC XCH Bcc Jcc 3clk INX DCX ROR RRC ROL RLC XOI ANI ORI ADI LDI LDX STX XOR AND ORR ADC LDA ADC LDA SBB STA verilogで複数レジスタをまとめて一つのレジスタとして扱う際に、別名をつける方法ってないんでしょうか。 右辺はfunctionで可能だが、左辺はどうしたらよいかわからない。 あと、AWKで書いていて、verilogでもcaseのbreak,continueが選択出来たら、と思いました。 2024-06-23 22:55 — enaka 返信
自作CPU(verilog版)アセンブラ作成
プログラミング言語AWK第二版がでた記念に、AWKで簡易アセンブラを書いてみました。
まだ170行しかなくラベルすら使えませんが、拡張機能のない素のAWKでも動くはず。
https://d.kuku.lu/srd3msype
今岡氏のDL166(https://monoist.itmedia.co.jp/mn/series/33743/)を参考にCPU自体も書き換え160行まで減らしました。
ステージデコードを簡略化し、回路規模と実行サイクルも削減。そのため、INX DCXとCLC SECのオペコードを入れ替えました。
新旧ブロック図を見比べると一目瞭然。
2clk NOP HLT CLC SEC XCH Bcc Jcc
3clk INX DCX ROR RRC ROL RLC XOI ANI ORI ADI LDI LDX STX XOR AND ORR ADC LDA ADC LDA SBB STA
verilogで複数レジスタをまとめて一つのレジスタとして扱う際に、別名をつける方法ってないんでしょうか。
右辺はfunctionで可能だが、左辺はどうしたらよいかわからない。
あと、AWKで書いていて、verilogでもcaseのbreak,continueが選択出来たら、と思いました。