에 나는 어셈블리의 다음과 같은 덩어리에 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
본인은 "시작"GET 절을 참조하십시오. 그것은 함수에서 매개 변수를 취하는 루프처럼 보이고 % ecx에있는 것과 비교합니다. jge 조건이 충족되면 함수가 반환되고, 그렇지 않으면 % edx를 4 % ecx만큼 추가하고, % eax로 이동하고, % ecx를 증가시키고, 다시 반복합니다.
나는 "신비"부분을 정말로 이해하지 못합니다. 특히 xorls 및 movl 문 % eax 나 % ecx에 아무것도 나타나지 않으면, xorl이하는 일은 무엇입니까? 내가 추측하고있는 movl은 함수에서 매개 변수를 가져 와서 % edx로 옮기는 것입니다.
모든 통찰력이 도움이되고 감사합니다.
이 코드를 어디에서 찾을 수 있습니까? – unwind
@unwind 나는 숙제를 냄새 맡는다. –
무언가를 배타적으로 의미하는 것은 0으로 설정한다는 의미입니다. – Michael