【发布时间】:2016-01-16 12:41:22
【问题描述】:
foo:
pushl %ebp
movl %esp,%ebp
movl 12(%ebp),%ecx
xorl %eax,%eax
movl 8(%ebp),%edx
cmpl %ecx,%edx
jle .L3
.L5:
addl %edx,%eax
decl %edx
cmpl %ecx,%edx
jg .L5
.L3: leave
ret
我知道 xorl 是 for 循环 (int i=0) 的指标,但我无法理解其余代码... 谁能给我一个提示?
谢谢!
【问题讨论】:
-
没有提供原始C代码,目的是找出等效的C代码!
-
xor只是归零,它本身并不一定意味着循环。此外,许多循环不是从零开始的。向后跳转可以更好地指示循环,即jg .L5。至于提示,请使用指令集参考和调用约定文档来注释每条指令的功能。 -
你为什么不看看这个问题和答案?问题非常相似,答案中的所有步骤都得到了很好的解释,它应该可以帮助您理解。 reverseengineering.stackexchange.com/questions/2096/…
标签: c loops assembly disassembly x86