これは実際に動かしてみると楽しい。
楽しい?
...いや、私だけかもしれません。
ポケモンgoの方が楽しいですね。
インストールから動かすまでの手順は下記の通り。
$ git clone https://github.com/suzukiplan/vgs-cpu.git
$ cd vgs-cpu
$ make build
$ ./vgsdrun src/test/asm_mul.asm -s
assembling: src/test/asm_mul.asm on memory
starting debug run.
00000000: ----- start-a -----
00000000: 08 E8 03 : line#00006 > LD A, 1000
00000003: 6F 64 : line#00007 > MUL A, 100
00000005: A7 A0 86 01 00 : line#00008 > CMP A, 100000
0000000a: F8 08 03 00 00 : line#00009 > JNE $308 (test-failed)
> h
command usage:
- h ... help
- r ... show registers
- q ... quit
- other ... execute next line
> r
registers:
c->r.a = 000186A0, c->r.b = 00000000, c->r.c = 00000000, c->r.d = 00000000
c->r.p = 0000000A, c->r.s = 00000000, c->f.z = 00000000, c->f.q = 00000000
> q
$
vgsdrunを実行すると以下のようにコマンド入力待ちになります。
00000000: ----- start-a -----
00000000: 08 E8 03 : line#00006 > LD A, 1000
>
00000000: 08 E8 03 : line#00006 > LD A, 1000
>
上記は1行上の命令(08 E8 03)をこれから実行するという意味です。
enter キーを押せば実行して以下のように表示されます。
00000000: ----- start-a -----
00000000: 08 E8 03 : line#00006 > LD A, 1000
00000003: 6F 64 : line#00007 > MUL A, 100
>
00000000: 08 E8 03 : line#00006 > LD A, 1000
00000003: 6F 64 : line#00007 > MUL A, 100
>
ちゃんとエスケープで綺麗に表示してます。
復帰(\r)や改行(\n)とかは割とよく使うかもしれませんが、1行上に戻るという中々普通に生活(プログラミング)していると使わないエスケープを使っています。
printfで書くと以下のような感じ。
printf("\033[1A");
ぐぐっても1発では出てこかなかったけど、C/C++言語で作るコマンドインタフェース(CLI)のプログラムで「1行上の行に戻りたい」みたいなニーズは少ないのだろうか。
なお、WindowsのMS-DOSプロンプトでちゃんと動くかは未確認です。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。