下溢的定義與Z3_mk_bvadd_no_underflow()
和Z3_mk_bvadd_no_overflow()
打我有感覺的下溢的定義不匹配什麼我在文獻中找到其他地方(維基百科,INTEL編程手冊,計算器,... ):什麼是Z3術語
據我所知,溢流是當相加的結果比可以表示給定的在其上的操作數被編碼的比特的數量的最大數量。這是平常的。
對於下溢,我知道(在Z3術語中),當結果小於可以表示的最小整數時,給定操作數編碼的位數。這是可以的,但是在我看到的文獻中不常見(例如wikipedia),因爲這個概念只適用於浮點數。
在Intel編程手冊,上溢/下溢的處理攜帶和溢出國旗:
進位標誌 - 如果算術運算產生一個進位或 設置借用最重要的結果;否則清除 。該標誌表示 無符號整數運算的溢出條件。它也用於多精度 算術運算。
溢出標誌 - 設置如果整數結果太大正 數或過小的負數(排除符號位),以適應目標操作數 ;否則清除。該標誌指示有符號整數(二進制補碼)算術的一個 溢出條件。
您能否確認Z3術語下溢的確切定義?
我建議將其添加到文檔中,以及減法的假定方式(從第二個操作數中減去第一個操作數,再從第一個操作數中減去第二個操作數),這可以從Z3的其他API中獲得。