2011-01-24 6 views

答えて

14

コードはマシンによって理解されなければならず、VM内で解釈されたり実行されたりしていないため、アセンブラでコードが最初に変換されます。このアセンブリコードは、g ++のコンパイルオプションに-Sフラグを使用して取得できます(もちろんg ++を使用している限り)。

g++ -S -o file.s file.cpp 

はすべきことです。

3

コンパイラによって異なります。 C++がコンパイルするものには実際のルールはありませんが、ある時点ではコンピュータ上で実行できるはずです。ほとんどのコンパイラには、アセンブリにコンパイルするためのスイッチがあります。

gccを使用すると、-Sを追加して.asmファイルにコンパイルできます。

Visual Studio用http://codegem.org/2008/10/generate-assembly-from-c-code-in-visual-studio

16

オブジェクトファイルにC++ソース変換するC++コンパイラの大半(十分な制御情報を機械コードを実行可能ファイルにリンクする)を参照。たとえば、実際にgccにアセンブリコード(asmソース)を生成させるには、-sフラグを使用する必要があります。通常、アセンブリは見えません。

しかし、C++標準では、コンパイラから出力される最終形式は必須ではありません。コードを実行するときに特定の方法で動作する必要があります。

実際、最古のC++コンパイラは実際にはCソースコードを生成してコンパイルしました。

masochisticを感じる場合は、C++コンパイラでオブジェクトコード、Javaバイトコード、またはGWBASICを生成させることができます。

+1

JavaバイトコードにC++コードをコンパイルする方法は非常に参考になりますが、単なる質問です。 –

+2

さて、そうするためにコンパイラを書く必要があります。申し訳ありませんが、私はそこにコンパイラがあることを暗示しているわけではありません。 – paxdiablo

+0

MSVCはMSILにコンパイルできます。これは概念的にはJavaバイトコードに似ています。 – MSalters

関連する問題