fil*_*ipe 1 c x86 assembly loops disassembly
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
Run Code Online (Sandbox Code Playgroud)
我知道xorl是for循环的指示符(int i = 0),但我无法理解代码的其余部分......有人可以给我一个提示吗?
谢谢!
函数foo有两个参数,让我们称他们x和y.
foo: # foo(x, y)
pushl %ebp
movl %esp,%ebp
movl 12(%ebp),%ecx # ecx = y
xorl %eax,%eax # eax = 0
movl 8(%ebp),%edx # edx = x
cmpl %ecx,%edx # while (ecx < edx) {
jle .L3
.L5:
addl %edx,%eax # eax += edx
decl %edx # edx--
cmpl %ecx,%edx # }
jg .L5
.L3:
leave
ret # return eax
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.