我試圖找到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