#概要
windowsでiverilogやってみた。
polyphonyでcpu書いてみる。
アセンブラでfizzbuzz書いてみる。
ハンドコンパイルしてみた。
#ニーモニック
ニーモニック | HEX |
---|---|
r0set 0 | 0x8000 |
r1set 1 | 0x8401 |
r0save 0 | 0xd000 |
r1save 1 | 0xd401 |
r0load 0 | 0xc000 |
r1load 1 | 0xc401 |
r0out | 0xa000 |
r0 + r1 | 0x0100 |
r0 < r1 | 0x6100 |
r0 % r1 | 0x7100 |
jp 2 | 0x4002 |
if 2 | 0x5002 |
#アセンブラをハンドコンパイル
rom = [
0x8000, # r0set 0 0
0xd000, # r0save 0 1
0xd001, # r0save 1 2
0xd002, # r0save 2 3
#label_20:
0xc002, # r0load 2 4
0x8401, # r1set 1 5
0x0100, # r0 + r1 6
0xd002, # r0save 2 7
0x8409, # r1set 9 8
0x6100, # r0 < r1 9
0x5011, # if label_32 a
0xc001, # r0load 1 b
0x8401, # r1set 1 c
0x0100, # r0 + r1 d
0xd001, # r0save 1 e
0x8000, # r0set 0 f
0xd002, # r0save 2 10
#label_32:
0xc000, # r0load 0 11
0x8401, # r1set 1 12
0x0100, # r0 + r1 13
0xd000, # r0save 0 14
0xc000, # r0load 0 15
0x8464, # r1set 100 16
0x6100, # r0 < r1 17
0x5053, # if label_255 18
0xc000, # r0load 0 19
0x840f, # r1set 15 1a
0x7100, # r0 % r1 1b
0x502a, # if label_120 1c
0xd000, # r0load 0 1d
0x8005, # r1set 5 1e
0x7100, # r0 % r1 1f
0x503d, # if label_140 20
0xd000, # r0load 0 21
0x8003, # r1set 3 22
0x7100, # r0 % r1 23
0x5048, # if label_160 24
0xc001, # r0load 1 25
0xa000, # r0out 26
0x8002, # r0load 2 27
0xa000, # r0out 28
0x4004, # jp label_20 29
#label_120:
0x8066, # r0set 'f' 2a
0xa000, # r0out 2b
0x8069, # r0set 'i' 2c
0xa000, # r0out 2d
0x807a, # r0set 'z' 2e
0xa000, # r0out 2f
0x807a, # r0set 'z' 30
0xa000, # r0out 31
0x8062, # r0set 'b' 32
0xa000, # r0out 33
0x8075, # r0set 'u' 34
0xa000, # r0out 35
0x807a, # r0set 'z' 36
0xa000, # r0out 37
0x807a, # r0set 'z' 38
0xa000, # r0out 39
0x8020, # r0set ' ' 3a
0xa000, # r0out 3b
0x4004, # jp label_20 3c
#label_140:
0x8062, # r0set 'b' 3d
0xa000, # r0out 3e
0x8075, # r0set 'u' 3f
0xa000, # r0out 40
0x807a, # r0set 'z' 41
0xa000, # r0out 42
0x807a, # r0set 'z' 43
0xa000, # r0out 44
0x8020, # r0set ' ' 45
0xa000, # r0out 46
0x4004, # jp label_20 47
#label_160:
0x8066, # r0set 'f' 48
0xa000, # r0out 49
0x8069, # r0set 'i' 4a
0xa000, # r0out 4b
0x807a, # r0set 'z' 4c
0xa000, # r0out 4d
0x807a, # r0set 'z' 4e
0xa000, # r0out 4f
0x8020, # r0set ' ' 50
0xa000, # r0out 51
0x4004, # jp label_20 52
#label_255:
0x4056, # end 53
]
以上。