我试图找到与下面的汇编块相当的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
我得到了"开始"部分.它似乎是一个循环,从函数中获取参数并将其与%ecx中的任何内容进行比较.如果满足jge条件,则函数返回,否则它将%edx添加4%ecx,将其移至%eax,递增%ecx,并再次循环.
我真的不明白"神秘"的一部分.特别是xorls和movl语句.如果%eax或%ecx中没有任何内容可以启动,那么xorl正在做什么.我猜测的movl是从函数中取一个参数并将其移动到%edx?
任何见解都是有帮助和赞赏的.