如何區分while循環與x86彙編中的if語句? 說我的程序得到這個x86彙編:而如果在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}
?
我不明白你的問題。是什麼讓你認爲.L2作爲一個while循環?它做了一個比較,然後跳轉或不跳轉,就像if語句一樣。 – kronion