몇년전 프로그래밍 포럼에 만들었던 글타래에 적었던 코드. 그 글타래 자체는 다른 사람의 글에서 요청 비슷하게 한 것을 보고 열었었다. 내 스스로 쓸 일이 있을 것이라고는 생각을 하지는 못했다. 그런데, 최근에 다루는 문제를 푸는데 부호만 알면 되는 경우가 있을 줄이야! 내가 쓴 것을 내가 검색하는 어처구니 없음은 말할 것도 없고...
어처구니 없는 일을 다시 하지 않기 위해 적어두자.
입력: 단정도 부동 소수점 상수.
출력: 입력 값이 양수이면 1, 음수이면 -1, 0 이면 0.
대상: 인텔 32비트 CPU
제한 사항: 조건부 분기를 쓰지 말 것.
; int signum(float x) ; return value in eax signum proc mov eax,[esp+4] cdq cmp eax,1 sbb edx,1 adc edx,1 ; handle -0.0 add eax,eax neg eax sbb eax,eax and eax,edx ret signum endp