跳转到内容

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 注释

[编辑 | 编辑源代码]

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++ 注释,请参考 编程:CC++ 维基教科书

华夏公益教科书