我學習上的x86彙編通過它完成actully歸零,所有unintialised變量存儲請問這個代碼在裝配
;Zero the bss
movw $__bss_start, %di
movw $_end+3, %cx
xorl %eax, %eax
subw %di, %cx
shrw $2, %cx
rep; stosl
但不知道這段代碼是如何工作的BSS部分代碼來了。任何人都可以讓我知道這裏發生的事情,第一條指令是將bss段的地址存儲到二進制寄存器中,但最後三條指令的目的是什麼?
謝謝@Joachim,你能否更具體的關於最後2條指令,並且hwo actully bss正在歸零? –
@AmitSinghTomar更新了一些信息。 –
值得一提的是,如果DF標誌爲0,%e(di)只會遞增,如果DF標誌爲1,則它會遞減。您應該有一個'CLD'或'STD'指令來設置方向。另外值得一提的是,'STOS'指令的目標段在es中,如果你正在使用分段內存模型,這可能是相關的。 –