SYSTEM HACKING
EFLAGS OF(Overflow Flag) VS CF(Carry Flag)
msh1307
2022. 7. 31. 07:22
CF는 Carry가 일어나면 set되고 OF는 Overflow가 일어나면 set된다고만 알고 있었는데 헷갈려서 찾아보았다.
unsigned expression에서의 4-bit 연산을 보자.
1000 + 1000 = 10000은 최상단 비트가 carry된거라서 CF에 해당된다.
unsigned expression은 부호 개념이 없어서 Overflow가 의미가 없다.
signed expression에서의 4-bit 연산을 보자.
0111 + 0001 = 1000의 경우엔 MSB, 즉 Sign bit가 0에서 1이 되었으니 Overflow를 검출할 수 있고 OF에 해당한다.
CPU는 signed인지 unsigned인지 구분이 불가능하니 CF와 OF는 독립적으로 set된다.
1000 + 1000 = 10000 같은 경우는 Carry가 발생했으니 CF가 set되고 MSB가 바뀌었으니 OF가 set된다.