Как вы отличаетесь от цикла while и оператора if в сборке x86? Say моя программа получает эту x86 ассамблею:while vs if in x86 assembly
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
Say х находится на -8 (% EBP), В нижней части .L2 почему это время цикла?
почему: while(x >= 0){jump to .L4}
и нет: if(x >= 0){ jump to .L4}
??
Я не понимаю ваш вопрос. Что заставляет вас думать, что .L2 функционирует как цикл while? Он сравнивает, а затем либо прыгает, либо не работает, как оператор if. – kronion