if
if
C 語言的就像其他的程式語言,有 if
的語法,
而這個語法就需要 condition code 的幫忙才能實作出來
不過這篇文章會著重在 condition code 的行為,
之後再來探討他要如何幫忙實作出 if
語法
condition code 本質上就是一個 register
在 x86-64 的架構中共有 4 個,每個 condition code 都只有一個 bit
分別為:
而這裡所說的運算結果可以是 ADD
, SUB
, CMP
等等的指令
例如說 t = a + b
這個 C 語言句子 t
、a
、b
都為 int
時:
condition code | 被設為 1 的條件| 註解
----------+--------------+-----
CF | (unsigned)t < (unsigned) a | Unsigned overflow
ZF | (t == 0) | Zero
SF | (t < 0) | Negative
OF | (a < 0 == b < 0) && (t < 0 != a < 0) | Signed overflow
MSP430 的 status register 中,也有同樣功能的 4 個 bit
MSP430 | x86-64 | 註
---+---+---
V | OF | Signed overflow
N | SF | Negative
Z | ZF | Zero
C | CF | Unsigned overflow
可以看這份文件的 3.2.3 Status Register (SR)