5

マシンはバイナリコードをどのように解釈するのですか?私は理解していただきたいのは、あなたのコードが1と0に変わったからです。マシンはそれらを理解することができますが、どうやってそれをしますか?バイナリの翻訳には普通のテキストですか?マシンはバイナリをどのように解釈しますか?

答えて

12

最初に、「バイナリ」とはあなたが何を意味するかを意味するものではありません(テキストを含むコンピュータ上のすべてのデータは、すでにバイナリで表示され、処理する方法が異なります)。

第2に、コンパイルは面白いキャラクターへの単純な変換ではありません(そうであれば、言語ごとに異なるコンパイラーは必要ありません)。マシンコードを実際に理解するには、対象とするアーキテクチャを理解する必要があります。多くのコンピュータアーキテクチャがありますが、あなたのPCはその一つに過ぎません。非常に幅広いテーマであり、把握するためのコンピュータアーキテクチャの理解が必要です。

MIPS命令の例を示します。あなたが興味を持っているなら、読んで、実際の知識を得ることができます。私の記事の最後にあるリンクを試してみてください。

MIPSは、その命令フォーマットがより消化可能なものの1つであるため、人気のある導入対象です。 MIPS命令は32ビット幅です。 MIPSには、 "R"、 "I"、 "J"の3種類の命令があります。私は "私"の指示を見ていきます。

プロセッサが命令(32ビットのデータ)を取得すると、プロセッサは命令を読み込み、それをどのように処理するかを決定します。 「私は」命令は次のようになります。

|------|-----|-----|----------------| 
opcode rs rt immediate 
    6  5  5  16    (the numbers show how wide are each part) 

これらの意味:

  • オペコードすることは、これは(:加算、減算、乗算および他の多く例えば)で、命令の種類を伝えます。すべての命令( "R"と "J"タイプを含む)は6ビットのオペコードで始まり、どのような種類のプロセッサであるかがわかります。
  • rsおよびrtは、32ビット値を保持できるプロセッサのストレージの一種です。 MIPSはこれらのうち32個を有し、その数によって識別される。これはメモリと同じではなく、CPU自体の内部にあります。
  • 即時は数字です。これは、その数がレジスタやメモリではなく、命令の中に「正しく」あるために呼び出されます。

レジスタに格納された番号に即時を追加の具体例:この例では

001000 00001 00010 0000000000000011 

、Iは、上記のように部品に命令を破りました。

  • オペコード001000addiを意味または「即時追加」の値の意味は以下の通りです。
  • RS00001小数で1ので、命令のこの部分は、我々は1 としてRSを登録使用するプロセッサに指示します。
  • rd00010は、rsと同じ考え方の10進数で2です。
  • 即時0000000000000011は、10進数で3です。

addi命令は、このように動作します:それは、RSで見つかった値を取り、それに即時値を追加します。その後、結果はrdになります。したがって、命令が完了すると、rdには3 + 2 = 5が含まれます。

コンパイラは、テキストを解析して、プログラムで実行したのと同じことを行うターゲットプロセッサの命令を生成します。ご覧のとおり、プログラマーが記述するプログラムのテキスト表現と実行可能なマシンコードとの間には大きな違いがあります。

MIPSおよびコンピュータ・アーキテクチャには、いくつかの便利なリソース:

0

あなたが求めているのは大きなテーマです。コンピュータとコンパイラの原則構築方法の概要については、優れた本The elements of computing systemsをお勧めします。それは非常に簡単に従うことができ、演習は楽しいです。そのほとんどは、提供されたリンクでオンラインで入手できます。

This questionにもリンクがあります。

0

考えるを再生することができますこちらです。各スイッチには、オフ(0)またはオン(1)のいずれかの8つの電源スイッチがあります。コンピュータには8つのスイッチすべてが1として表示されます。これはコンビネーションロックのようなものです。あなたのキーボード上の各シンボルは組み合わせています。

関連する問題