私は、コンピュータが基本2(バイナリ)の数字だけを何年も理解していると聞いた。 最近、高度なスクリプト言語を停止してアセンブリをほとんど読まずに、マシンがどのように動作していたかを深く理解したかったのです。 私は、この言語の目標はCPUが高速であることを理解しました。単純なので、CPUはアセンブリ命令を簡単に解読できます。 申し訳ありませんが私の質問が明確でない場合、私は疑問をクリアしようとします: CPUはどのようにバイナリにアセンブリを変換するのですか? 私の質問は無意味かもしれません。コンピュータも電気で動くからです。この場合、私の質問は次のようになります: 「コンピュータはバイナリを理解するだけです」とはどういう意味ですか?CPUはどのようにしてアセンブリをバイナリに変換しますか?
答えて
アセンブリ言語は、人間が読むことができるもの(オペコード)とマシンが読むことができるもの(バイナリの電気記号)の間の中間表現です。
アセンブラでプログラムを書き込むと、アセンブラプログラムによってバイナリに変換され、このバイナリ表現がサポート(ハードドライブ、フロッピーディスク、テープなど)に格納されます。
コンピュータがあなたのバイナリを実行すると、ここに何が起こるのか(基本的に)です:
- そのバイナリ形式のプログラムがドライブからフェッチされ、RAMにロードされます。
- 命令はRAMからCPUに1つずつロードされ、命令のバイナリ形式(
10110 = current, no current, current, current, no current
)は、CPUの内部回路に何らかのアクションをトリガします(追加やロードなどをトリガする可能性があります) CPU回路によってサポートされる他の動作)。
これについて学ぶ最も良い方法は、非常に単純な4ビットプロセッサー(4つの操作と16バイトのRAMを想定)を構築することです。インターネットには多くのチュートリアルがあります。
「コンピュータはバイナリのみを理解しています」とはどういう意味ですか?
単にCPUのみ形態において、その論理ゲートの「命令」に理解することを意味する:{電流、電流}及びこれらのシンボルの各々特定セリエは、CPUの一部に特定のアクションをトリガし、提供いくつかの結果。
"コンピュータはバイナリのみを理解する"は、現実の単純すぎるものです。 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のバイナリ表現)
- 1. イメージをバイナリに変換しますか?
- 2. どのように再帰的な方法を使用してバイナリをDecimalに変換できますか?
- 3. CPUのダイレクトナンバーオペランドはどのように機能しますか?
- 4. マシンはバイナリをどのように解釈しますか?
- 5. papervision3dはどのようにテクスチャを変換しますか?
- 6. apkpureはどのようにiPhoneアプリを変換しますか?
- 7. バイナリをバイナリに変換すると、辞書より優れていますか?
- 8. このJSON datetimeはどのように変換しますか?
- 9. どのようにLPCWSTRをconst char *に変換しますか?
- 10. どのように辞書をリストに変換しますか?
- 11. xcodeプロジェクトをどのようにココアポッドに変換しますか?
- 12. どのようにttfフォントをpff2に変換しますか?
- 13. Android - どのようにhtmlをpdfに変換しますか?
- 14. どのようにバイナリファイルをバイトに変換しますか?
- 15. どのように.h5ファイルを.csvに変換しますか?
- 16. どのようにドキュメントをプレビューイメージに変換しますか?
- 17. アセンブリMIPS:シフトで10進数をバイナリに変換する
- 18. 小数はバイナリでどのように機能しますか?
- 19. このアセンブリはどのように機能しますか?
- 20. 'java'バイナリにはどのような環境変数が影響しますか?
- 21. アセンブリ8086:8ビットのバイナリ番号をグレイ番号に相当するものに変換しますか?
- 22. COMアセンブリをCLRアセンブリに変換するにはどうすればよいですか?
- 23. Web.config変換はどのように動作しますか?
- 24. どのようにしてC#WritableBitmapをEmguCV/OpenCV Matに変換しますか?
- 25. どのようにしてJCEアルゴリズム名をAlgorithmIdentifierオブジェクトに変換しますか?
- 26. MOVSXアセンブリ命令はどのように機能しますか?
- 27. アセンブリのデバッグ中にCPUが実際に停止しますか?
- 28. バイナリまたは整数をVHDLの下位に変換するにはどうすればよいですか
- 29. Postgres:フラグのような/ 2進数をバイナリ表現に変換して戻す方法はありますか?
- 30. std :: ostringstreamはどのようにしてboolに変換されますか?
それは変換と同じようにそれを翻訳します任意のプログラミング言語をバイナリに変換します。それをコンパイルします。 – apokryfos
http://stackoverflow.com/documentation/assembly/1358/introduction-to-assembly/8901/machine-code#t=201609091238377164881 – Ped7g
関連性が高い:http://stackoverflow.com/questions/12007435/how-does-ハードウェア実行アセンブリ/ 12008470#12008470さらには:[アセンブリ命令はどのようにCPUの電圧変化に変換されますか?](http://stackoverflow.com/questions/3706022/how-does-an-assembly- CPUに命令電圧を電圧変更する命令)を実行する。私はそれらのいずれかが正確な重複しているかどうかわからないので、私は実際にこれを複製として閉じなかった。バイナリのマシンコードを生成するためにasmソースコードのテキストでアセンブラを実行するステップを逃したようです。 –