簡體   English   中英

x86 AT&T 語法匯編的注釋語法

[英]Commenting syntax for x86 AT&T syntax assembly

Intel 語法有使用分號的注釋。 當我切換到 AT&T 時,它實際上試圖解釋這些評論。

AT&T 匯編的注釋語法是什么?

對 at&t 匯編程序的評論是:

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

根據谷歌給我的第四個結果

///* */注釋僅在.S文件中受支持,因為 GCC 在組裝之前對它們運行 C 預處理器。 對於.s文件,實際的匯編器本身 ( as ) 僅將#作為注釋字符處理,對於 x86。

對於其他一些 ISA,GAS 使用其他注釋字符,例如@代表 ARM。

GNU AS 評論

以下由as直接處理。 (不是 C 預處理器。)

  • #注釋 - 用作“行的其余部分”注釋。

    重要警告: #也是 GCC 預處理器指令符號。 預處理器首先運行,所以這意味着如果你正在運行它,

     # include comments in your code to get full credit

    在行的開頭(空格不計算在內)會給你error: #include expects "FILENAME" or <FILENAME> with 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 comment與您對 C 的期望非常相似。

    在極少數情況下,這會導致. 偽操作。 為了解決這個問題,我只使用塊注釋或將注釋移到前一行。

  • /* Use this for block comments */ . 我目前還沒有遇到任何問題。

那我用什么?

  • 如果你不允許預處理的一切,選擇的GNU AS評論風格,一個#/
  • 如果您確定預處理所有內容,則使用 C 樣式注釋///**/可能更安全,以避免預處理器問題。 但是,如果您牢記隱藏的陷阱,您應該沒問題。
  • 如果您擔心必須同時處理兩者,請選擇/##這樣您就不必擔心預處理器或任何一個文件中缺少預處理器。 ##更通用,但可能會導致代碼更混亂。
  • 無論情況如何,選擇一個並保持一致。

嘗試 # 或 // 或 /* */。 可能有用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM