[解決済み】アセンブリコード vs マシンコード vs オブジェクトコード?
質問
オブジェクトコード、マシンコード、アセンブリコードの違いは何ですか?
その違いを視覚的に例示してください。
どのように解決するのですか?
マシンコード は、CPUが直接実行できるバイナリ(1と0)コードです。もし、テキストエディタでマシンコードファイルを開くと、印刷不可能な文字を含むゴミが表示されるでしょう(いいえ。 それら 印刷不可能な文字) ).
オブジェクトコード は、まだ完全なプログラムにリンクされていないマシンコードの一部です。完成した製品を構成する、ある特定のライブラリやモジュールの機械語コードです。また、完成したプログラムのマシンコードにはないプレースホルダーやオフセットが含まれている場合もあります。その リンカ は、これらのプレースホルダーやオフセットを使って、すべてをつなげます。
アセンブリコード
は、平文で(ある程度)人間が読めるソースコードで、ほとんどがマシン命令と1対1の直接の類似性を持っています。これは、実際の命令、レジスタ、その他のリソースを表すニーモニックを使用して実現されています。例としては、以下のようなものがあります。
JMP
と
MULT
は、CPUのジャンプ命令と乗算命令です。CPUは機械語とは異なり、アセンブリコードを理解することはできません。アセンブリコードからマシンコードへの変換には
アセンブラ
または
コンパイラ
しかし、通常、コンパイラといえば、CPUの命令からさらに抽象化された高水準のプログラミング言語を連想することが多い。
完全なプログラムを作るには ソースコード をアセンブリ言語またはC++などの高級言語で作成します。ソースコードをアセンブル(アセンブリコードの場合)またはコンパイル(高級言語の場合)してオブジェクトコードにし、個々のモジュールをリンクして最終プログラムのマシンコードとします。非常に単純なプログラムの場合、リンクのステップは必要ないこともある。また、IDE(統合開発環境)のように、リンカーとコンパイラーが一緒に起動される場合もある。また、複雑な 作る スクリプトまたは 解決策 ファイルは、最終的なアプリケーションをどのように構築するかを環境に伝えるために使用されるかもしれません。
また インタプリタ型言語 は、異なる挙動をします。インタープリタ言語は、特別なインタープリタプログラムのマシンコードに依存する。基本的なレベルでは、インタープリタはソースコードを解析し、直ちにコマンドを新しいマシンコードに変換して実行する。最近のインタープリターは、ソースコードの全セクションを一度に評価し、可能な限りキャッシュして最適化し、複雑なメモリ管理タスクを処理するなど、より複雑になってきている。
最後に、プログラムの種類としては ランタイムエンバイロメント または 仮想マシン . このような場合、プログラムはまず低レベルの 中間言語 または バイトコード . バイトコードは仮想マシンに読み込まれ、仮想マシンはそれをジャストインタイムでネイティブコードにコンパイルする。ここでの利点は、仮想マシンが、プログラムの実行時やその特定の環境で利用できる最適化を利用できることである。コンパイラは開発者のものなので、多くの場所で実行できる比較的汎用的な(あまり最適化されていない)機械語コードを作成しなければならない。しかし、ランタイム環境または仮想マシンは、エンドユーザーのコンピュータにあるため、そのシステムが提供するすべての機能を利用することができる。
関連
-
[解決済み] MIPSの大、小、大
-
[解決済み] error A2022: 命令オペランドは同じサイズでなければなりません。
-
[解決済み] オブジェクトファイルのシンボルテーブルとリロケーションテーブル
-
[解決済み] movsbl 命令は何をするのですか?重複
-
[解決済み] アセンブリ言語 jeジャンプ機能
-
[解決済み] Collatz予想の検証を行うC++のコードは、なぜ手書きのアセンブリよりも高速に動作するのでしょうか?
-
[解決済み] 1サイクルあたり4FLOPの理論上の最大値を達成するにはどうすればよいですか?
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
-
[解決済み】GCCを使用して読みやすいアセンブリを作成しますか?
-
[解決済み】マルチコアアセンブラとはどのようなものですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン