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된다.