0

コンパイラの仕組みを完全に理解しているとは言えません。さらに、私は彼らについてほとんど知りません。しかし、ドキュメントに記述されたコードを機械理解するにはどうすればよいのでしょうか。

私たちが書いたものは何かに変換され(コンパイルの詳細も教えていただければ幸いです)、特定の操作の後にバイナリコードが現れることを私は知っています。

しかし、回路が 0 と 1 をどのように理解して操作できるのでしょうか。私はコンピュータ アーキテクチャについてある程度の知識を持っています。トランジスタがどのように機能し、ALU がどのように機能し、どのように実装されるかを知っています。RAM がどのように機能するか (多かれ少なかれ、それ以上の説明も素晴らしいでしょう) と HDD も知っています。

しかし、具体的なマシンに完全に適合する魔法のようなもの(少なくとも私にとって) をコンパイラがどのように生成するかを想像しようとすると、私は迷子になります。

それは私を驚かせます。私たちが毎日当たり前だと思っていることは、概念的にとても素晴らしいことです。抽象的なコードと物理マシン連携...すごい。

あなたの答えに必要な場合は、マシンの内臓に深く入り込むことを心配しないでください。私はそれが本当に興味深いと思います。多分あなたは私を啓発してくれるでしょう. このプロセスを説明するために提供する詳細は、より詳細です。

4

4 に答える 4

2

Stackoverflow はこの種の質問に適した場所ではありませんが、この本を読むだけで、あなたが求めていることを正確に説明しています: http://www.amazon.com/Code-Language-Computer-Hardware-Software/ dp/0735611319

于 2011-10-14T18:59:15.073 に答える
1

それは何も理解していません。スローされた生のコードが何であれ、盲目的に実行するだけです。それがどのように正確に行われるかは、過去にさまざまなアーキテクチャ間で大きく変化しました。

Core2 やその他の最新の x86 CPU の仕組みは複雑すぎて、SO の答えにはなりませ

さらに詳しく知りたい場合は、OpenCores.orgで実際の実装を見ることができます。

于 2011-10-14T19:02:27.593 に答える
0

この質問は、「ドキュメントに記述されたコードをマシンが理解する方法を理解するための優れたリソースは何ですか?」と述べておく必要があります。SOスレッドで説明するには多すぎます。このようなリソースは役に立ちますが、おそらくハードウェア学習リソースをさらに探す必要があります。

于 2011-10-14T19:12:50.907 に答える
0

C、C++、JAVA などの言語は高水準言語と呼ばれます。これらの言語で記述したすべてのコードは、最終的にプロセッサが理解できるアセンブリと呼ばれる別の言語に変換されます。アセンブリは、プロセッサが理解する命令セットです。たとえば、mips プロセスでは、add $3, $2, $1 は、プロセッサに 2 つのレジスタを追加する 32 ビットまたは 64 ビットのバイナリ文字列に変換されます。

結論から言うと、次のようになります。

高レベル コード -> アセンブリ -> バイナリ文字列 -> cpu

于 2011-10-14T19:00:15.717 に答える