x86 汇编/注释
外观
< X86 汇编
在编写代码时,使用一些注释来解释代码正在做什么,特别是为什么这样做,非常有用。有时为什么意味着重复已经得出的结论,例如,在某一点上,已经确立了数据满足某些标准的知识。
注释是汇编器在将汇编代码转换为机器代码时直接丢弃的普通文本。在汇编中,注释通常由分号 ;
表示,尽管 GAS 使用 #
表示单行注释,以及 /* … */
表示可能跨越多行的块注释。
以下是一个例子
xor rax, rax ; rax ≔ false
; divisibility by four
test rcx, 3 ; are the two right-most bits set?
jnz done ; yes ⇒ not divisible by 4
setz al ; al ≔ ZF [i.e. `true`, since `jnz` above]
…
分号之后在同一行上的所有内容都将被忽略。
有时,在调试过程中,可以使用普通注释来跟踪错误,即导致程序出现意外和不希望的行为的错误。为此,实际的源代码被注释掉了
Label1:
mov ax, bx
;mov cx, ax ; possibly _overwriting_ some needed value?
…
在这里,汇编器永远不会看到第二个指令 mov cx, ax
,因为它忽略了分号之后的所有内容。
HLA 汇编器 也具有以 C 或 C++ 风格 编写注释的能力,但我们不能使用分号。这是因为在 HLA 中,分号用在每条指令的末尾
mov(ax, bx); // This is a C++ comment.
/*mov(cx, ax); everything between the slash-stars is commented out.
This is a C comment*/
C++ 注释 一直延伸到行尾,而 C 注释从 "/*" 一直延续到 "*/",跨越多行。为了更好地理解 HLA 中的 C 和 C++ 注释,请参考 编程:C 或 C++ 维基教科书。