ホームページ > バックエンド開発 > C#.Net チュートリアル > アセンブリ言語とC言語の違いは何ですか?

アセンブリ言語とC言語の違いは何ですか?

青灯夜游
リリース: 2020-04-27 13:57:09
オリジナル
8254 人が閲覧しました

アセンブリ言語とC言語の違いは何ですか?次の記事ではアセンブリ言語とC言語の違いについて紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。

アセンブリ言語とC言語の違いは何ですか?

C 言語とは:

C 言語は一般的なコンピュータ プログラミング言語であり、広く使用されています。 C 言語の設計目標は、簡単にコンパイルでき、低レベルのメモリを処理でき、少量のマシンコードを生成でき、ランタイム環境のサポートなしで実行できるプログラミング言語を提供することです。ただし、C 言語は多くの低レベルの機能を提供します。標準仕様で記述された C 言語プログラムは、一部の組み込みプロセッサ (シングル チップ マイクロコンピュータまたは MCU) やスーパーコンピュータ、その他のオペレーティング プラットフォームを含む、多くのコンピュータ プラットフォームでコンパイルできます。

アセンブリ言語とは:

アセンブリ言語 (アセンブリ言語) は、電子コンピューター、マイクロプロセッサ、マイクロコントローラー、またはその他のプログラム可能なデバイスに使用されるプログラミング言語です。 、記号言語とも呼ばれます。アセンブリ言語では、機械語命令のオペコードを置き換えるためにニーモニックが使用され、命令またはオペランドのアドレスを置き換えるためにアドレス シンボル (Symbol) またはラベルが使用されます。さまざまなデバイスでは、アセンブリ言語はさまざまな機械語命令セットに対応しており、アセンブリ言語命令セットはアセンブリ プロセスを通じて機械語命令に変換されます。一般に、特定のアセンブリ言語と特定の機械語命令セットは 1 対 1 に対応しており、異なるプラットフォーム間で直接移植することはできません。

多くのアセンブラは、プログラム開発、アセンブリ制御、および補助的なデバッグのための追加のサポート メカニズムを提供します。一部のアセンブリ言語プログラミング ツールは、多くの場合、マクロ アセンブラとも呼ばれるマクロを提供します。

アセンブリ言語は、他のほとんどのプログラミング言語ほどプログラミングでは広く使用されていません。今日の実際のアプリケーションでは、通常、低レベルのハードウェア操作や要求の厳しいプログラム最適化の状況で使用されます。アセンブリ言語は、ドライバー、組み込みオペレーティング システム、およびリアルタイム実行プログラムに必要です。

C 言語とアセンブリ言語の違い:

アセンブリ言語: 効率が高く、ハードウェアの制御性が高く、サイズが小さく、保守が難しく、移植性が非常に悪い

C 言語: 効率が比較的低く、ハードウェアの制御性が低い、オブジェクト コード サイズが大きい、保守が容易、移植性が高い

#アセンブリ言語は動作効率が高い 理由:

1. アセンブリ言語は本質的には機械語のニーモニックです。 CPU はサポートする命令セットのみを実行でき、これらの命令セットの各命令は一連の 2 進数、つまり "0" と "1" の順序付けされた組み合わせです。この組み合わせはプログラマにとって覚えておくのが不便です。そのため、「MOV A 0x40」のようなニーモニックがあります。したがって、アセンブリ言語を CPU によって実行可能な機械語にコンパイルするには、変換アクションのみが必要です。 C 言語でプログラムを作成した後、コンパイラを使用して C 言語を対応する CPU 命令セットに対応する機械語にコンパイルする必要があります。アセンブリ言語と機械語は 1 対 1 に対応します。しかし、C言語はどうでしょうか?もちろん、それはそれほど良いことではありません。 C言語は構文が固定されており、C言語で書かれたプログラムをCPUが理解できる機械語命令にコンパイルする際、1対1の対応がとれないため、コンパイルルールが必要となり、実行効率が低下します。 。 C言語はプログラマ向けの言語であるのに対し、アセンブリ言語はCPUに直接向けられた言語であるとも言えます。

2. アセンブリ言語は CPU と直接向き合う言語であり、命令セットがサポートする範囲であれば、特殊機能レジスタ、汎用レジスタ、レジスタなどのあらゆるバイトを直接かつ柔軟に管理できます。ストレージユニットも、隅々までお楽しみいただけます。 C 言語はメモリの使用と管理においても非常に強力ですが、やはり構文の影響を受けます。最も単純な例を挙げると、C言語にはint型でもlong型でも3バイトや5バイトに相当する変数の型が存在しないため、アプリケーションごとに固定バイト数にする必要があり、必然的にメモリ使用量が無駄になってしまいます。ほとんどのアセンブリ言語にはそのような構文がまったくありません。疑似命令 (実際には可読性が向上するだけです) の助けを借りて、アセンブリ言語プログラムは任意のバイト数の変数を使用できます。もちろん、それらの処理は、アセンブリ言語プログラムよりもはるかに面倒です。 C 言語。最終的にはまだバイトごとにつなぎ合わせられていますが、C 言語でプログラムを書くのは簡単です。最終的にはコンパイラが処理してくれるので、心配する必要はありません。楽さの代償は無駄だ。非効率的なメモリ使用は、プログラム全体の全体的な効率にも影響します。 ??

C 言語とアセンブリの異なる適用場面

1: より単純な論理演算、論理アルゴリズム、および単純な演算しかない場合、アセンブリを使用すると次の結果が得られます。より正確な結果コードですが、C でも実行できます。

2: 複雑な演算、浮動小数点演算、非線形方程式などが含まれる場合、アセンブリは非常に困難ですが、C 言語は高級言語として簡潔かつコンパクトで、柔軟な構文メカニズムを使用しています。複雑なプログラムを書くのがはるかに簡単になります。

3: 各プロセッサのアセンブリ構文はほとんど異なります。アセンブリのみを使用すると、拡張性と移植性が非常に低くなります。C を使用した方がはるかに優れています。

4: ハードウェアを初期化するには、アセンブリ言語を使用します。

さらに関連する知識については、PHP 中国語 Web サイト に注目してください。 !

以上がアセンブリ言語とC言語の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート