我试图找到与下面的汇编块相当的C语言:
.section .text
.globl mystery
.type mystery, @function
mystery:
pushl %ebp
movl %esp, %ebp
xorl %eax, %eax
xorl %exc, %ecx
movl 8(%ebp), %edx
begin:
cmpl 12(%ebp), %ecx
jge done
addl (%edx, %ecx, 4), %eax
incl %ecx
jump begin
done:
movl %ebp, %esp
popl %ebp
ret
Run Code Online (Sandbox Code Playgroud)
我得到了"开始"部分.它似乎是一个循环,从函数中获取参数并将其与%ecx中的任何内容进行比较.如果满足jge条件,则函数返回,否则它将%edx添加4%ecx,将其移至%eax,递增%ecx,并再次循环.
我真的不明白"神秘"的一部分.特别是xorls和movl语句.如果%eax或%ecx中没有任何内容可以启动,那么xorl正在做什么.我猜测的movl是从函数中取一个参数并将其移动到%edx?
任何见解都是有帮助和赞赏的.