评论x86 AT&T语法汇编的语法

ihs*_* ih 6 assembly comments intel att

Intel语法使用分号进行注释.当我切换到AT&T时,它实际上试图解释这些评论.

AT&T程序集的注释语法是什么?

小智 12

at&t汇编程序的注释是:

 # this is a comment
 /* this is a comment */
Run Code Online (Sandbox Code Playgroud)

根据Google给我的第四个结果


cal*_*hiz 8

GNU AS 评论

以下由as直接处理。(不是 C 预处理器。)

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

    重要警告:#也是 GCC 预处理器指令符号。预处理器首先运行,所以这意味着如果你正在运行它,

    # include comments in your code to get full credit
    
    Run Code Online (Sandbox Code Playgroud)

    在行的开头(空格不算)会给你error: #include expects "FILENAME" or <FILENAME>gcc,即使#.

    然而,这些是区分大小写的,所以大写# Include实际上是有效的:

    # Include comments in your code to get full credit
    
    Run Code Online (Sandbox Code Playgroud)

    尽管无论如何将评论的第一个字母大写通常是一种很好的做法,但您可以将其##用作以防万一的措施。(只是不要在属于#define宏的任何行上使用它,因为##它也是标记粘贴运算符。)

  • / 注释 - 行首注释

    这些只能在行首使用(在删除空格之后)。

    / This is OK
    xor %eax, %eax / This is *not* ok
    
    Run Code Online (Sandbox Code Playgroud)

C 风格的注释(预处理器)

如果 C 预处理器在源文件上运行,这些工作。

在大多数体系结构中,支持以下内容:

  • // Rest of line comment 与您对 C 的期望非常相似。

    在极少数情况下,这会导致.伪操作出现问题。为了解决这个问题,我只使用块注释或将注释移到前一行。

  • /* Use this for block comments */. 我目前还没有遇到任何问题。

那我用什么?

  • 如果你不能让一切预处理,选用的GNU AS评论样式之一,#/
  • 如果您确定预处理所有内容,那么使用 C 样式注释///**/避免预处理器问题可能会更安全。但是,如果您牢记隐藏的陷阱,您应该没问题。
  • 如果您担心必须同时处理两者,请选择其中之一/##这样您就不必担心预处理器或任何一个文件中缺少预处理器。##更通用,但可能会导致代码更混乱。
  • 无论情况如何,选择一个并保持一致。

  • 您不必*必须*预处理 AT&amp;T 语法文件。`gcc` 在编译 `.S` 文件时会执行,但在编译 `.s` 时则不会。不过,无论是否有 CPP,编写可以安全使用的注释都是一个好主意。 (2认同)