概要
vistaでquartusやってみた。
cpuを書いてみた。
命令を拡張してみた。
写真
間接アドレシング
サンプルコード
mem[12'h000] = 16'h1055;// push 85
mem[12'h001] = 16'h1008;// push 8
mem[12'h002] = 16'h9000;// st
mem[12'h003] = 16'he000;// out
mem[12'h004] = 16'h1008;// push 8
mem[12'h005] = 16'h8000;// ld
mem[12'h006] = 16'he000;// out
mem[12'h007] = 16'h4007;//bye: jmp bye
mem[12'h008] = 16'h0048;//a: 0x0048
mem[12'h009] = 16'h0049;//b: 0x0049
mem[12'h00a] = 16'h0050;//c: 0x0050
写真
サブルーチンコール
サンプルコード
mem[12'h000] = 16'h1030;// push 48
mem[12'h001] = 16'h3010;// set a
mem[12'h002] = 16'h1005;// push 5
mem[12'h003] = 16'h3011;// set b
mem[12'h004] = 16'ha000;// call
mem[12'h005] = 16'h4009;// jmp add
mem[12'h006] = 16'h2012;// get c
mem[12'h007] = 16'he000;// out
mem[12'h008] = 16'h4008;//bye: jmp bye
mem[12'h009] = 16'h1001;//add: push 1
mem[12'h00a] = 16'hf000;// +
mem[12'h00b] = 16'h2010;// get a
mem[12'h00c] = 16'h2011;// get b
mem[12'h00d] = 16'hf000;// +
mem[12'h00e] = 16'h3012;// set c
mem[12'h00f] = 16'hb000;// ret
mem[12'h010] = 16'h0000;//a: 0x0000
mem[12'h011] = 16'h0000;//b: 0x0000
mem[12'h012] = 16'h0000;//c: 0x0000
以上。