アセンブラは、アセンブリ言語を機械語に変換します。アセンブリ言語が機械語命令と 1 対 1 の関係を持っていることが理想的ですが、常にそうであるとは限りません。 ほとんどの場合、命令のアセンブリ言語構文からの変換と機械語コードは、アセンブラで行う場合でも手動で行う場合でも同じです。当然、時々ドントケアビットがいくつかあり、アセンブラーと人間は異なるドントケアビットを選択する可能性があるため、結果はビット一致のビットである必要はありませんが、縦方向と速度方向は同一であり、まったく違いはありません。
人間とアセンブラー ソフトウェアの違いは、もしあれば、アセンブリ言語がマシン コードと 1 対 1 の関係にないこと、および/またはさまざまな理由でプログラマーがアセンブラーに処理を任せたいことです。これは、疑似命令、マクロ、または外部で定義された変数に関係するものである可能性があります。
アセンブリ言語は、特定のアセンブラーによって定義されている用語です。同じプロセッサに対して、互換性のない多くの異なるアセンブリ言語を使用できます。また、言語が特定の命令を選択するために必要なすべての情報を完全に記述していないインスタンスがあるアセンブリ言語を使用することもできます。たとえば、一部のアセンブラを使用した一部の命令セットのニア ジャンプとファー ジャンプです。
したがって、リンゴとリンゴを比較したい場合、手で組み立てたコードとソフトウェアで組み立てたコードの間に違いはありません。つまり、問題のコードはあいまいにならないように適切に記述されているため、ソフトウェアと人間のアセンブラーはそれをアセンブルできます。dont care ビット以外の違いが見つかった場合は、最適化に関係している可能性があります。これは、人間のアセンブラーがコードを変更することに関係しており、一致するアセンブリ言語を変更できる/変更する必要があります。この違いは、人間とアセンブリ言語のアセンブラーには何の関係もありませんが、あるプログラマーは別のプログラマーと比較してプログラムします。基本的に、ソフトウェア アセンブラを使用してアセンブリ言語で同じ結果を得ることができます。