コンピューター サイエンスの課題では、任意の言語で小さなプログラムを作成し、ソース コード命令とコンパイルされたマシン コード命令の比率を決定することになっています。これはどのように行うのですか?
1 に答える
コンパイラによっては、スイッチを使用してコードのアセンブラ バージョンを作成することもできます。アセンブラ コードは、オペコード (「機械語」) の直接ニーモニック表現です。
gcc
-masm=intel
あり (デフォルトの AT&T 構文よりも Intel を好む場合は、追加を検討してください):
gcc -S ...
私の知る限りでは、unixoid システム上の他のコンパイラも をサポートしてい-S
ます。これによりコンパイルがスキップされ、ソースファイルにちなんで名付けられたファイルを探したいと思うでしょうが、拡張子は.s
.
またはMSVC の場合:
cl.exe /FA
...追加することもできますc
(つまり/FAc
、コンパイルも行います)。次に、ファイルを探し.asm
ます。
参照: C++ プログラムのアセンブリ コードを表示するにはどうすればよいですか?
これが完了したら、基本的に (関連する!) ソース行を比較します。ただし、何が適切かは、あなた自身 (または教師) の判断によって異なります。SLOCをカウントするためのツールがあります。たとえば、このウィキペディアの記事で参照されているSLOCCountです。
注意: 直接表現に関する最初の段落の記述は、少し間違っています。マクロアセンブラーについて話している場合、マクロのために、これは当てはまりません。しかし、MSVC はバックエンドとしてマクロ アセンブラを使用しますが、コンパイラはマクロ機能をあまり使用しないため、SLOC カウントに(あまり) 干渉するべきではありません。