while 루프와 x86 어셈블리의 if 문을 구분하는 방법은 무엇입니까? 왜이 잠시 루프가 .L2의 하단에x86 어셈블리의 경우와 비교할 때
jmp .L2 # jump to test at end
.L4:
movl -4(%ebp), %eax # eax = A
cmpl -12(%ebp), %eax # compare A to C
jge .L3 # skip next statement if A >= C
addl $1, -4(%ebp) # A++
.L3:
subl $1, -8(%ebp) # B--
.L2:
cmpl $0, -8(%ebp) # compare B to 0
jns .L4 # restart code if B >= 0
말의 X는 -8 (%의 EBP)에 위치하고 있으며, : 내 프로그램이 86 어셈블리지고 말 ? while(x >= 0){jump to .L4}
하지 :
은 왜이다 if(x >= 0){ jump to .L4}
을 ??
질문을 이해할 수 없습니다. 왜 .L2가 while 루프로 기능한다고 생각하니? 그것은 하나의 비교를 수행 한 다음 if 문과 같이 점프하거나하지 않습니다. – kronion