2012年12月1日土曜日

ラインアセンブラ4

しらみつぶしテストをした。
通常使わないような命令の組み合わせで、ミスが見つかった。
また、間違いではないものの、逆アセンブルした内容をアセンブルした時に、元のバイナリとは異なるバイナリになるものもあった。それらが大量に引っかかった。

このマイコンのアセンブリ言語は、かなり変である。
アセンブリ言語1つに対して、表現方法が異なるマシン語が複数ある。
元々逆アセンブラ用のしらみつぶしテストは、アセンブラ表記では同じでも、マシン語では異なるバイナリの変換もテストしていたので、それをそのままアセンブラに喰わせると、どれかが元とは違うバイナリになる(1つは正しい変換になる)。
それらがあまりにも多い(しらみつぶしなので、テストの量が元々多い)ので、かなり苦労した。

テストはすべて成功するようになった。
かなり大量のテストをしているのに、PCでは一瞬で終わる。
何ともあっけない。
成功するようになったものの、このテストはアセンブラの異常系のテストができない。
逆アセンブラが吐くコードは正常なものだからだ。そのため、エラーメッセージの内容もチェックできない。
(メッセージのチェックを自動化するのは現在の人類にはほぼ不可能だろう)
まぁ、変な使い方をしなければ正常に動作するので、使えなくはないのだが。

どんなソフトウエアでも、作業量割合で見ると、重要な部分は全体の1割~2割だ。
それが動いたとしても、作業が1~2割が終わったところであり、残作業がまだ8割ある。
それと、計算式処理の部分をもう一回整理したい。

0 件のコメント:

コメントを投稿