디버깅이 필요한 할당 작업을 수행 중입니다. & T 어셈블리입니다. 나는 다음 두 줄에 문제가있어, 약간의 설명을 요구하고 싶다. , I는 "-8 + %esi + (%ebx*4) + %eax
"으로이를 해석하고IA32 어셈블리 설명
add -0x8(%esi,%ebx,4),%eax
cmp %eax,-0x4(%esi,%ebx,4)
난 %esi
는 사용자가 입력 한 값을 가지고 있다는 것을 알고 모두 %eax
및 %ebx
첫번째 라인 2.
같다. %ebx
이 2이므로이 값은 %esi + %eax
입니다. 따라서 본질적으로 add 라인은 입력 값에 2를 더합니다.
내가 알고있는 두 번째 줄은 %eax
과 -0x4(%esi,%ebx,4)
을 비교합니다. 이 시점에서 %eax
는 %esi + 2
동일하고, 이전의 논리를 다음과 오른쪽의 값은 두 번째 줄을한다는 것을 의미가 %esi + 2
을 비교하고, %ebx
여전히
내가 올바른 오전 경우 2. 동일하기 때문에 %esi + 4
로 평가 것 -4 + %esi + (%ebx*4)
동일 %esi + 4
이는 모든 입력 값에 대해 참일 수 없습니다. 그러나 임무에 따라 사실이어야합니다. 번역에서 어디에서 잘못 될까요?
더 많은 코드를 붙여 넣으십시오. 아마도 esi 또는 ebx를 업데이트하는 루프가있을 것입니다. –