我正在實現一個自定義的16位cpu(在Verilog中)。如果我需要實現溢出標誌來處理簽名比較,那麼我會遇到麻煩。簽名比較中需要溢出標誌嗎?
在我目前的執行情況,我只檢查零的結果和標誌位來確定結果的比較:
when comparing x to y the ALU calculates: x - y (2's compl)
If the sign bit is set and the result is not zero y > x
If the sign bit is not set and the result is not zero x > y
我不使用溢出標誌來確定結果的比較。我已經爲x和y嘗試了許多不同的值,並且它們都是正確的。
可以簽名比較是否實現沒有溢出標誌?如果不是,你能否給我x和y的值,以這種方式給出錯誤的結果?
你試過了什麼樣的數字? – EOF
@EOF f.e. 0xa000(-24k)和0xb000(-20k)。和0xf000,0xff00,0x8000,0x7000,0x8400,0x0f00,0x1700,0xf000 ... – ErwinM
的大多數組合您是否嘗試過'INT_MIN'('0x8000')和'1'('0x1')? 'INT_MIN - 1'將溢出並創建'INT_MAX'('0x7FFF'),它非零且沒有符號位設置,根據您的表,它會指示INT_MIN> 1。 – EOF