11

Intel 構文には、セミコロンを使用したコメントがあります。AT&T に切り替えたとき、実際にコメントを解釈しようとしました。

AT&T アセンブリのコメント構文は何ですか?

4

3 に答える 3

15

at&t アセンブラーのコメントは次のとおりです。

 # this is a comment
 /* this is a comment */

Googleが私にくれた4番目の結果によると

//GCC はアセンブル前に C プリプロセッサを実行するため、/* */コメントはファイルでのみサポートされます。.Sファイルの場合.s、実際のアセンブラ自体 ( )は、x86 の場合、コメント文字としてasのみ処理されます。#

他の一部の ISA では、GAS は@ARM などの他のコメント文字を使用します。

于 2013-07-03T07:51:46.303 に答える
8

GNU AS コメント

以下はas直営で取り扱っております。(C プリプロセッサではありません。)

  • #コメント - 「残りの行」コメントとして機能します。

    重要な警告:#は GCC プリプロセッサ ディレクティブ シンボルでもあります。プリプロセッサが最初に実行されるため、これを実行している場合、

    # include comments in your code to get full credit
    

    行の先頭 (空白はカウントされません) は、.error: #include expects "FILENAME" or <FILENAME>の後にスペースがあっても、gccを提供します#

    ただし、これらは大文字と小文字が区別されるため、大文字化# Includeは実際には機能します。

    # Include comments in your code to get full credit
    

    とにかくコメントの最初の文字を大文字にすることは一般的に良い習慣ですが、念のため##の手段として使用することができます. (トークン貼り付け演算子でもある#defineため、マクロの一部である行では使用しないでください。)##

  • /コメント - 行頭コメント

    これらは、行頭 (空白の削除後) でのみ使用できます。

    / This is OK
    xor %eax, %eax / This is *not* ok
    

C スタイルのコメント (プリプロセッサ)

これらは、C プリプロセッサがソース ファイルで実行されている場合に機能します。

ほとんどのアーキテクチャでは、以下がサポートされています。

  • // Rest of line commentC に期待するとおりに動作します。

    まれに、これにより.疑似操作で問題が発生します。これを回避するには、ブロック コメントを使用するか、コメントを前の行に移動します。

  • /* Use this for block comments */. 現在、これに関する問題は発生していません。

それで、私は何を使うのですか?

  • すべてを前処理することが許可されていない場合は、GNU AS コメント スタイルのいずれかを選択するか#/.
  • すべてを前処理することが確実な場合は、C スタイルのコメント//を使用/**/してプリプロセッサの問題を回避する方が安全かもしれません。ただし、隠れた落とし穴を心に留めておけば、大丈夫です。
  • 両方を処理しなければならないことが懸念される場合は、どちらかを選択/##てください。いずれかのファイルでプリプロセッサまたはプリプロセッサが不足していることを心配する必要はありません。##より汎用性がありますが、より複雑なコードになる可能性があります。
  • いずれの場合も、1 つを選択し、一貫性を保ちます。
于 2015-04-30T04:48:37.150 に答える