我正在使用RH850控制器和編譯器greenHills在C語言。在範圍內檢查是這樣的:檢查值是否在diapason拆卸
if ((x>=2) && (x<=5))
y=1
它是用Osize選項編譯的。當編譯它似乎是這樣的:
zxb r7
addi -2,r7,r1
cmp 3,r1
bnh .L1295
.L1295
是y=1
標籤(這y=1
用於其他變化,在某些其他條件也是如此)。兩條指令都影響相同的標誌
支票(x>=2)
用此代碼實現:addi -2,r7,r1
。但是這個指令的標誌結果將被下一個清除,並且不正確。至少我是這麼認爲的。
顯然我錯了。有人可以解釋這個反彙編片段嗎?
尋求調試幫助的問題(「爲什麼這個代碼不工作?」)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現問題所需的最短代碼。沒有明確問題陳述的問題對其他讀者無益。請參閱:如何創建最小,完整和可驗證示例。 – Olaf