Skip to content

実行命令数の取得/実行完了後のメモリ出力#23

Open
ryoryon66 wants to merge 4 commits into
kuis-isle3hw:masterfrom
ryoryon66:master
Open

実行命令数の取得/実行完了後のメモリ出力#23
ryoryon66 wants to merge 4 commits into
kuis-isle3hw:masterfrom
ryoryon66:master

Conversation

@ryoryon66

Copy link
Copy Markdown

ソートコンテストのためにプログラムを書く際に実行命令数と実行完了後のメモリの内容が簡単に取得できたら便利だなと思い、SIMPLE/Bに準拠する形で機能拡張を行いました。jarファイルに関しては前回のPRと同様、README記載の方法で作成したわけではないので問題があれば変更をお願いします(こちらの環境で動作することは確認しました)。

実行命令数について

シミュレーション終了後に実行命令数をnumber of executed instractions: 8のように出力するようにしました。ソートプログラムの命令数が減らせたかをパソコンで確認できると便利だと思います。

実行完了後のメモリ内容の出力について

-d-mが同時に指定されている際については、プログラムの実行が完了したのちに実行後のメモリ内容をdebug_output.mifというファイルに出力するようにしました。ソートが成功したかのデバッグに有用であると考えます。

テスト

LI 1, 100
LI 2, 57
LI 3, 0
LI 4, 40
ST 2, -50(1)
LD 3, 10(4)
OUT 3
HLT

について実行命令数は

number of executed instractions: 8

であり仕様を満たしています。

diff output.mif debug_output.mifの出力は

56c56
< 50 : -24576;
---
> 50 : 57;

であり50番地に57が書き込まれていることが分かります。

またAll_Instractionsを使用してテストしたところ、実行完了後のメモリは想定と一致していました(INでは57を与えた)。実行命令数は88と出力され、答えは知りませんがおおよそあっているのではないかと思います。

0 : 0;
1 : 0;
2 : 0;
3 : 0;
4 : 0;
5 : 0;
6 : 0;
7 : 0;
8 : 0;
9 : 0;
10 : 0;
11 : 0;
12 : 0;
13 : 0;
14 : 0;
15 : 57;
16 : 0;
(以下output.mifと同じ)

@ryoryon66

Copy link
Copy Markdown
Author

また配布されているバブルソートのプログラムをシミュレーションすると実行命令数は6302247となり今年のソートコンテストでSIMPLE/Bアーキテクチャ(おそらくCPIは5)で同様のプログラムを用いた班のランダムケースのサイクル数/5の値である6299182.4と近くなっています。

また実行完了後に生成されたmifファイルがソートされていることは目視で確かめました。

@ryoryon66 ryoryon66 marked this pull request as draft June 4, 2023 07:44
@ryoryon66 ryoryon66 marked this pull request as ready for review June 4, 2023 07:45
@ryoryon66 ryoryon66 marked this pull request as draft June 4, 2023 08:05
@ryoryon66 ryoryon66 marked this pull request as ready for review June 4, 2023 08:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant