跳轉到內容

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++ 華夏公益教科書

華夏公益教科書