我试图找到C-相当于组装以下块:汇编语言到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?
任何洞察力是有益的和赞赏。
你从哪里找到这段代码? – unwind
@unwind我闻到功课。 – 2013-12-11 14:10:23
XORing本身意味着将其设置为零。 – Michael