アセンブリは私が学びたい言語ですが、何かがアセンブリでプログラムされているということはあまり耳にしません。私の質問は、アセンブリ言語の用途は何ですか? まだ使用されていますか?
4 に答える
アセンブリは何に使用されますか?
簡単な答え: ソフトウェア関連のすべて。
それはまだ使われていますか?
短い答え: 最も純粋な形で、めったにそうではありません。間接的に、すべてのソフトウェアで使用されています。
より長い答え:
アセンブリは、生のバイナリ コードを人間が読めるようにする方法です。最初のコンピューターが構築されたとき、操作を実行する命令をダイヤルインするだけで済みましたが、コンピューターがより複雑になり、より高度な計算が必要になるにつれて、生のバイナリでプログラムを構成するすべての命令をダイヤルインするのは非常に面倒になりました。面倒。オペランド (および/またはレジスタまたはメモリアドレス) に 8 ビット幅のオペコードと 16 ビットを使用する 220 行の長さのプログラムを考えてみましょう。これは、すべての命令が 24 ビットであることを意味します。これに 220 (各行に 1 つの命令があると仮定した場合の命令の量) を掛けると、5280 になります。退屈で、エラーが発生しやすい。
そのため、コンピューター科学者は、ニーモニックを使用してすべての異なる命令を記述するというアイデアを思いつきました。例として、x86 アセンブリでは「move」を表す「mov」という省略形があります。まさにそれを行い、データをある場所から別の場所に移動 (または実際にコピー) します。これにより、プログラムの読み書きがはるかに簡単になります。
アセンブリは単語とルールを使用してバイナリ コードを記述しているだけなので、アセンブリは常に最速です。あなたはCPUと直接話しています。とてつもないメリットですね。
それでも、コンピューターはさらに複雑になり、ソフトウェアはより高度に、というよりも大きくなりました。数行のアセンブリを入力することは問題ありませんが、たとえば、アセンブリで Web ブラウザーを作成すると、追いつくのが非常に困難になります。追跡する必要があるデータが非常に多く、間違いを犯しやすいです。
したがって、より高度な言語が開発されました。C/C++ などの言語は、CPU と直接やり取りしないため、通常は高水準言語と呼ばれます。このような言語は、特定のタスクを実行するように設計されたミニ ASM プログラムである組み込み関数を使用することがよくあります。すべての高級プログラミング言語は、基本的に ASM 関数の膨大なライブラリであると言えます。
現在、たとえば python は C でコーディングされており、C 自体はアセンブリを呼び出し、アセンブリはバイナリ コードを呼び出します。基本的に、高ければ高いほど、ASM から分離されますが、コアでは ASM のままです。唯一の違いは、コンピューター自体を利用して、人間が読める「コード」をバイナリにコンパイルすることです。
これがすべて理にかなっていることを願っています!
アセンブリ言語は、C などの高レベルのプログラミング言語を機械語に変換するために使用されます。プロセッサは、バイナリ形式でエンコードされた短い個別の命令のシーケンスであるマシン コードのみを実行できます。プログラムが実行されるたびに、マシン コードがプロセッサによって実行されます。アセンブリ言語は、人間が読める形式のマシン コードです。
高レベル コードをマシン コードに変換する作業はコンパイラによって実行され、アセンブリは通常、マシン コードに変換される前に中間表現として途中で作成されます。この観点から、アセンブリは、少なくとも一般的な高水準プログラミング言語と同じくらい頻繁に記述されます。つまり、別のプログラムによって記述されているだけです。
アセンブリ言語でプログラムを作成する理由:
- あなたの教授はあなたに言った
- コンパイラが最適化された、または動作するマシンコードを生成することを信頼していない
- 独自のコンパイラまたはプログラミング言語を作成している
一般的なアセンブリ言語 (および基礎となる ISA)
現在、アセンブリは主に、選択した高級言語が、ベクトル命令やプリフェッチなどの特定のCPU機能へのアクセスをプログラマーに許可しない場合に使用されます。
アセンブリ言語は、さまざまな状況で意味を成します。
- 大量生産、最小コストの組み込みシステム。C のようなものを実行するための追加のハードウェアは、法外なものになる可能性があります。
- 効率の向上。
- ハードウェアへのアクセスは、高水準言語では不可能/利用できません。
2 はかつては重要でしたが、ここ数十年でほとんど忘れ去られてしまいました。