某広島の大学の情報科学部の授業内で使用したTinyCPUのアセンブリ言語のコードから機械語を出力するプログラムです。
授業内では手書きで心を無にしながら機械語に変換していたが、心を無にするだけでは変換スピードが遅く、全ての内容を授業内に終わらせられなかったので、自分への戒めとして、自動変換プログラムを作成しました。
cargo run <ファイル名>
繰り返し処理を用いて1から10までの和を計算するプログラム
L1: PUSH i
JZ L2 ; i が0のときL2番地に分岐
PUSH n
PUSH i
ADD
POP n ; n <- n + i
PUSH i
PUSHI 1
SUB
POP i ; i <- i - 1
JMP L1
L2: PUSH n
OUT ; スタックトップの値をポップし、7セグメントLEDに表示
HALT ; プログラムの動作を停止
i: 10
n: 0
(2-4.asmファイルがディレクトリ内に存在する場合の)cargo run 2-4.asm
の出力結果
000:200E
001:500B
002:200F
003:200E
004:F000
005:300F
006:200E
007:1001
008:F001
009:300E
00A:4000
00B:200F
00C:E000
00D:0000
00E:000A
00F:0000