2011-10-14 12 views
1

コンパイラの仕組みを完全に理解しているとは言えません。また、私はそれらについて少し知っています。しかし、私はいつも、マシンではどのようにしてからまで理解しているのですか?私たちが文書に書いているコードは、マシン上でコードが実行されるのはなぜですか?

何かに翻訳されていることがわかりました(コンパイルの詳細を教えていただければ幸いです)。その後、特定の操作の後にバイナリコードが表示されます。

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

コンパイラがどのように生成するのか想像してみると、私は失われてしまいます魔法のもの(少なくとも私にとっては)具体的なマシンにぴったりです。

私を驚かせる。私たちが毎日当たり前に取っていることは、概念上素晴らしいことです。 協力抽象コードと物理的マシン...素晴らしい。

あなたの答えに必要な場合は、マシンの勇気に行くことを心配しないでください、私はそれが本当に面白いと思うし、多分私を啓発することができます。あなたがこのプロセスをよりよく説明するために与える詳細。

答えて

2

StackOverflowの質問のこの種のための適切な場ではありませんが、あなたはこの本を読んであげるならば、それはあなたが求めている正確に何を説明します。http://www.amazon.com/Code-Language-Computer-Hardware-Software/dp/0735611319

+0

+1その素晴らしい本のために、ちょうどそれを提案しようとしていた。あなたが学校以来忘れてしまったことの良い思い出もあります。 – krs1

0

C、C++、JAVAと同様の言語が高いと呼ばれているがレベルの言語。これらの言語で書かれたすべてのコードは、最終的にプロセッサが理解するアセンブリと呼ばれる別の言語に翻訳されます。アセンブリは、プロセッサが理解できる命令セットである。たとえば、mipsプロセスで$ 3、$ 2を追加すると、$ 1は32ビットまたは64ビットのバイナリ文字列に変換され、プロセッサに2つのレジスタが追加されます。これを締結する

は何が起こるかです:

ハイレベルのコード - > assambly - >バイナリ文字列 - > CPU

+0

-1は、機械語とアセンブリ言語を混在させます。 –

1

それは何かを理解していません。それはあなたがそれに投げる生コードをまばらに実行します。どのように正確にそれが過去に、そして異なるアーキテクチャの間でかなり変化しました。

Core2や他の現代的なx86 CPUの仕組みは、あまりにも複雑すぎるので、SOの答えはありませんが、Agner Fogs Microarchitectureマニュアルですべてを読むことができます(トランジスタレベルまではありません)。

あなたがより深く行きたい場合は、あなたがOpenCores.org

0

で実際の実装を見てオーバー持つことができますこの質問は、マシンは、コードを理解することが可能であるか理解するための優れたリソースは何ですか」記載すべき私たちは文書に書いていますか? " SOスレッドで説明するにはあまりにも多くのことがあります。 thisのようなリソースはあなたの友人ですが、ハードウェアの学習リソースをもっと求めてください。

関連する問題