Я пытаюсь найти 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 Я чувствую домашнюю работу. –
XORing что-то само по себе означает установить его на ноль. – Michael