您如何区分 x86 程序集中的 while 循环和 if 语句?假设我的程序正在获取这个 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),在 .L2 的底部,为什么这是一个 while 循环?
为什么是:
while(x >= 0){jump to .L4}
而不是:
if(x >= 0){ jump to .L4}
??