ARM, x86 등등 아키텍처에선


정수 연산을 하고 결과값의 상태를 나타내는 상태 레지스터를 바꾸는데


그 상태들 중 하나가 오버플로우 플래그임


이전 연산에서 signed 오버플로우가 발생하면 이 비트가 켜짐


아쉽게도 C 표준에선 이걸 접근할 수가 없음



그래서 대게 오버플로우를 피하기 위해서 브랜치를 사용하는데


인라인 어셈블리를 통해 접근하는 게 가능하긴 함




여기서 반환값이 0이 아니면 오버플로우


근데 이상하게 assert로 평가하면 어셈블리가 이상하게 나오더라


https://godbolt.org/z/fGd9qnzqW


아마 최적화 문제인 거 같은데 assert말고 그냥 쓰면 잘 작동함


진짜 이렇게 쓰는 데를 본 적은 없고 그냥 이런 방법도 있다는 거임