Intel 语法有使用分号的注释。当我切换到 AT&T 时,它实际上试图解释这些评论。
AT&T 程序集的注释语法是什么?
Intel 语法有使用分号的注释。当我切换到 AT&T 时,它实际上试图解释这些评论。
AT&T 程序集的注释语法是什么?
at&t 汇编器的注释是:
# this is a comment
/* this is a comment */
//
和/* */
注释仅在.S
文件中受支持,因为 GCC 在汇编之前对它们运行 C 预处理器。对于.s
文件,实际的汇编程序本身 ( as
) 仅#
作为注释字符处理,对于 x86。
对于其他一些 ISA,GAS 使用其他注释字符,例如@
ARM。
以下由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 预处理器在源文件上运行,这些将起作用。
在大多数架构中,支持以下内容:
// Rest of line comment
与您对 C 的期望几乎一样。
在极少数情况下,这会导致.
伪操作出现问题。要解决此问题,我只需使用块注释或将注释移至前一行。
/* Use this for block comments */
. 我目前没有遇到任何问题。
#
或/
.//
并/**/
避免预处理器问题可能会更安全。但是,如果您牢记隐藏的陷阱,则应该没问题。/
,##
这样您就不必担心预处理器或任何一个文件上缺少预处理器。##
更通用,但可能导致代码更混乱。尝试 # 或 // 或 /* */。可能工作