2

UBUNTU および G++ コンパイラを使用して gmp-5.0.0 im 用に作成されたプログラムの ASSEMBLY コードを見つけることができる場所..コードをコンパイルするためのコマンドは「g++ test.cc -o outp -lgmp」です。

実際、1 と 0 に関して内部で何が起こっているかを知りたいです...メモリ割り当てがどのように行われ、RAW ビットで操作がどのように実行されるかを知りたいです!!

4

5 に答える 5

1

gcc(1)マニュアルページから:

   -save-temps
       Store the usual "temporary" intermediate files permanently; place
       them in the current directory and name them based on the source
       file.  Thus, compiling foo.c with -c -save-temps would produce
       files foo.i and foo.s, as well as foo.o.  This creates a
       preprocessed foo.i output file even though the compiler now
       normally uses an integrated preprocessor.
于 2010-01-31T07:06:45.210 に答える
1

-Sフラグを使用して、生成されたアセンブリ言語を取得できます。これには、使用するライブラリ関数などのために生成されたコードではなく、コード用に生成されたアセンブリがほとんど含まれることに注意してください。「ほとんど」は、インクルードしたヘッダーにインライン関数用に生成されたコードを含めることができる/含めるためです。

于 2010-01-31T07:07:01.803 に答える
0

objdump1を使用して を分解できますlibgmp。面白くないでしょう。

(そして、コードの逆アセンブルには、ほとんどの場合、同様libgmpに逆アセンブルしない限り、「内部で何が起こるか」を明らかにしない関数の呼び出しが含まlibgmpれます。)

おそらく、代わりにソースコード2を読みたいですか?

于 2010-01-31T07:06:32.033 に答える
0

The code is written in C so you should look at the source code this will be a first step to understand the assembly code (usually it is enough to understand what happen with "raw bits"). There is some assembly inlined anyway

次に、gdb内でコードを実行し、disassembleコマンドを使用して、非常に少数の特定のコードのアセンブリコードを確認し、それらを理解しようとすることができます.

于 2010-01-31T07:09:43.490 に答える