英特尔语法包含使用分号的注释。当我转到AT&T、 它实际上试图解读这些评论。
AT&T组件?
at&t汇编程序是:
# this is a comment
/* this is a comment */
根据第四个结果,谷歌给了我
//
和/* */
注释仅在.S
文件中受支持,因为GCC在组装之前会在它们上运行C预处理器。对于.s
文件,对于x86,实际的汇编程序本身(as
)仅将#
作为注释字符处理。
对于其他一些ISAs,GAS使用其他注释字符,例如用于ARM的@
。
GNU AS注释
以下内容由as
直接处理。(不是C预处理器。)
-
CCD_ 9评论-作为";行的其余部分";议论
重要提示:
#
也是GCC预处理器指令符号。预处理器首先运行,所以这意味着如果正在运行它,# include comments in your code to get full credit
行的开头(空白不计算在内)将为您提供带有gcc的
error: #include expects "FILENAME" or <FILENAME>
,即使在#
之后还有一个空格。然而,这些是区分大小写的,所以大写
# 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.的期望相当在极少数情况下,这会导致
.
伪操作出现问题。为了解决这个问题,我只需要使用块注释或将注释移动到前一行。 -
CCD_ 20。我目前还没有遇到任何问题。
那么我该用什么呢
- 如果不允许预处理所有内容,请选择GNU AS Comment样式之一
#
或/
- 如果您确信将预处理所有内容,那么使用C样式注释
//
和/**/
可能更安全,以避免预处理器问题。然而,如果你记住隐藏的陷阱,你应该没事 - 如果您担心必须同时处理这两种情况,请选择
/
或##
,这样您就不必担心预处理器或任何一个文件上缺少预处理器。##
更通用,但可能导致更混乱的代码 - 无论是什么情况,都要选择一个并保持一致
尝试#或//或/**/。可能工作