2017-10-01 7 views
0

このyoutube videoには、IntelとAT & Tの2種類のアセンブリ構文があります。アセンブリ構文とプラットフォームの関係はありますか?アセンブラはインテルのアセンブリ構文のみを受け入れます)。アセンブリ構文とプラットフォームの関係は何ですか

+4

いいえ。Intel x86アセンブリ言語には、Intel構文とAT&T構文の2つの*構文*があります。 [Wikipedia](https://en.wikipedia.org/wiki/X86_assembly_language#Syntax)を参照してください。 –

+0

@CodyGrayうわー、ありがとう。この質問を削除するか、あなたのコメントを回答として投稿する必要がありますか? –

+0

ええと、いずれか。私は重複したものを探していました。私はこれが1つになると誓っていたでしょうが、本当に良いマッチを思いついたわけではありません。 [これは私が見つけた最高です](https://stackoverflow.com/questions/35906734/does-att-syntax-work-on-intel-platform)。閉じて、おそらくそれに答えますが、正確な*重複はありません。この情報は[[tag:x86]]タグwikiにあります。おそらく[[tag:att]]タグと[[tag:intel-syntax]]タグwikiもあります。 :-) –

答えて

3

一切の接続がありません。アセンブリ言語構文はアセンブラによって定義されます。アセンブラは解析するプログラムです。機械コードは、適合しなければならない唯一の実際の標準です。たとえば、2つのx86構文について話をする人はいますが、構文にはオペランドの順序だけでなくすべてのテキストが含まれているため、多くのことがあります。 ARMには複数の構文があり、同じ理由で他にも構文があります。

チップセットまたはIPベンダーが命令セットを定義し、同時にアセンブリ言語の構文で、または少なくとも命令に関連してこれを提示することは興味深いですオペランドの順序だけでなく、命令自体の中にx86バリエーションがある場合は、アセンブリ言語にもっと多くの命令があります)、これらのベンダーは必要に応じてアセンブラとリンカを最小限に抑えます最高の関心事)。彼らのドキュメンテーションとこの特定のアセンブラは理想的には一致します(彼らの最善の利益のために)。しかし、標準化はそこで終わり、次の人/チームはアセンブラを機械コードに適合させる必要があり、コードを互換性のないものにすることはしばしば微妙な変更を行います(意図的かどうか、なぜ完全クローンを作るのか)。どのような理由であれ、ガスのバージョンがベンダー駆動の初期バージョンである場合を除いて、ガスの実装はチップ/ IPベンダーから互換性のない言語を作成する傾向があります(例えばrisc-vと言えば)

構文接続とバイナリファイル形式(elf、coffなど)は、ツールチェーンに関して重要です。明白な理由から、コンパイラがアセンブリ言語を出力し、アセンブラを起動するので、コンパイラによって生成されたコードは、そのチェーン内のアセンブラの構文と一致する必要があります。同様に、アセンブラで出力されるオブジェクトファイルの形式は、リンカのものと一致する必要があります。gnu ld dontのようなリンカは実際にリンク時に使用されるマシンコードをパッチするためにアセンブラに依存していると仮定します。その場合はアセンブリ言語を使用しても、個人的に検査/テスト/確認していなくてもかまいません)。

コンパイラがアセンブラに準拠しているという理由で、アセンブラがアセンブラに適合していると主張することができます。もし同じ人であれば、ツールチェーン全体の解決に役立つアイテムがアセンブラに追加できます。アセンブリ言語全体が最初に来ます。

最後に、私たちはプログラマとして、インストールされたコンパイラがそのシステム/プラットフォーム用のプログラムを作成することを期待しています。 Linuxマシン上でgccを実行すると、gcc hello.c -o helloという作業プログラムが作成されます。私たちがブートストラップを行い、そのプラットフォームのためにリンクする必要がなく、通常はCライブラリから来ますが、ツールチェーンの設計に依存していれば、最初から最後まで、誰もがシステムを認識しなければならないかもしれません。

+0

あなたがgnuとガスに頼っているのであれば、そのターゲットがデフォルトで構文を使用しているので、あなたは疎結合しています。しかし、そのシステム/ターゲットでそのツールチェインを使用することによって、それはあなたの選択です。 –

0

他の誰かが間違いを犯した場合に答える。コーディー・グレイのコメントによると、インテルとAT & Tは、実際にインテルX86アセンブリ言語です。

資源:

+0

[x86タグwiki](https:// stackoverflow .com/tags/x86/info)には、http://agner.org/optimize/やアセンブラマニュアルへのリンクなど、多くのリソースがあります。答えでは、 '[tag:intel-syntax]'と書いて、質問/情報(タグwiki)のマウスオーバードロップダウンでタグブロックを取得することができます/ –

関連する問題