我学习上的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中,如果你正在使用分段内存模型,这可能是相关的。 –