2016-09-09 6 views
1

私は、コンピュータが基本2(バイナリ)の数字だけを何年も理解していると聞いた。 最近、高度なスクリプト言語を停止してアセンブリをほとんど読まずに、マシンがどのように動作していたかを深く理解したかったのです。 私は、この言語の目標はCPUが高速であることを理解しました。単純なので、CPUはアセンブリ命令を簡単に解読できます。 申し訳ありませんが私の質問が明確でない場合、私は疑問をクリアしようとします: CPUはどのようにバイナリにアセンブリを変換するのですか? 私の質問は無意味かもしれません。コンピュータも電気で動くからです。この場合、私の質問は次のようになります: 「コンピュータはバイナリを理解するだけです」とはどういう意味ですか?CPUはどのようにしてアセンブリをバイナリに変換しますか?

+0

それは変換と同じようにそれを翻訳します任意のプログラミング言語をバイナリに変換します。それをコンパイルします。 – apokryfos

+1

http://stackoverflow.com/documentation/assembly/1358/introduction-to-assembly/8901/machine-code#t=201609091238377164881 – Ped7g

+0

関連性が高い:http://stackoverflow.com/questions/12007435/how-does-ハードウェア実行アセンブリ/ 12008470#12008470さらには:[アセンブリ命令はどのようにCPUの電圧変化に変換されますか?](http://stackoverflow.com/questions/3706022/how-does-an-assembly- CPUに命令電圧を電圧変更する命令)を実行する。私はそれらのいずれかが正確な重複しているかどうかわからないので、私は実際にこれを複製として閉じなかった。バイナリのマシンコードを生成するためにasmソースコードのテキストでアセンブラを実行するステップを逃したようです。 –

答えて

2

アセンブリ言語は、人間が読むことができるもの(オペコード)とマシンが読むことができるもの(バイナリの電気記号)の間の中間表現です。

アセンブラでプログラムを書き込むと、アセンブラプログラムによってバイナリに変換され、このバイナリ表現がサポート(ハードドライブ、フロッピーディスク、テープなど)に格納されます。

コンピュータがあなたのバイナリを実行すると、ここに何が起こるのか(基本的に)です:

  1. そのバイナリ形式のプログラムがドライブからフェッチされ、RAMにロードされます。
  2. 命令はRAMからCPUに1つずつロードされ、命令のバイナリ形式(10110 = current, no current, current, current, no current)は、CPUの内部回路に何らかのアクションをトリガします(追加やロードなどをトリガする可能性があります) CPU回路によってサポートされる他の動作)。

これについて学ぶ最も良い方法は、非常に単純な4ビットプロセッサー(4つの操作と16バイトのRAMを想定)を構築することです。インターネットには多くのチュートリアルがあります。

「コンピュータはバイナリのみを理解しています」とはどういう意味ですか?

単にCPUのみ形態において、その論理ゲートの「命令」に理解することを意味する:{電流、電流}及びこれらのシンボルの各々特定セリエは、CPUの一部に特定のアクションをトリガし、提供いくつかの結果。

2

"コンピュータはバイナリのみを理解する"は、現実の単純すぎるものです。 CPUは今のところCPUに限っていますが、非常に複雑なハードウェアです。算術論理装置(ALU)や制御装置(CU)などのモジュールで構成されています。

CPUが "理解できる"プログラムはバイナリでしかありません。これは、メモリが基本的にどのように動作するかを理解する必要があることを意味します。メモリは、論理ゲートを作成するために使用されるトランジスタを使用して構築される(より複雑な複雑さがここに隠される)。メモリの動作方法は、定数ループのようなものです。それを通って電流を供給すると(値を1に設定すると)、電源が供給されている限り、それ自体に戻ります。これが起こると、そのメモリは1の値を保持していると言います(現在の値があるため)。電流がない場合、メモリ位置は0(電流なし)の値を有する。

"実行中の"プログラムとは、メモリ(プログラムを含む)のメモリ内容をCPUに供給することを意味します。プログラムのエントリーポイントがあり、メモリの内容に基づいてCPUへの電源の投入/電源なし(0と1秒)のブロックが流れ始めるからです。CPUが入力で得ているものと内部的にCPUアーキテクチャーに基づいて、電流は別の経路をたどり、CPUの出力では入力が何であるかによって結果が変わります。どのように各CPUがこれを行うかは非常に長く複雑です(CPUが内部的にどのように見えるかはhttps://en.wikipedia.org/wiki/Processor_design)。

ここでアセンブリに何かを書くと、それは等価なバイナリ表現で書いたものを翻訳する特別なプログラムを経て行きます。あなたがADD 2, 3ような何かを書く場合たとえば は、アセンブラは5になりますCPUを通過した0と1のストリーム(または5のバイナリ表現)

関連する問題