2014-05-15 2 views
-1

나는 제로 매크로에 의해 부서를 만들 싶습니다분할 매크로

DIVIDE (zero_exception_boolean, 추천인, 분모)

나는 사람 assember 정확히 해요 때문에 , 누구든지 x86 어셈블리 (gcc, linux)를 사용하는 간단한 매크로에서이 작업을 수행하도록 도울 수 있습니다.

내가 기억하는 바로는 실제로 이것을 지원해야하는 '0으로 나누기'eflags 레지스터가 있습니다 (잘못된 것일 수 있음).

+0

0으로 나누는 매크로 또는 0으로 나눗셈을 방지하는 매크로를 만들고 싶습니까? – Lundin

+0

그런 동작이 발생하면 boolean을 true로 설정하여 보호합니다. – AoeAoe

+1

C에서하지 마시겠습니까? 나는 어셈블리를 좋아하지만 여기서는 사용하지 않는 것이 훨씬 더 간단합니다. – harold

답변

2

C 함수로 할 수없는 이유가 없습니다.

div_result_t DIVIDE (int* result, int numerator, int denominator) 
{ 
    if(denominator == 0) 
    { 
    return div_by_zero; 
    } 

    *result = numerator/denominator; 

    return div_ok; 
} 


int main() 
{ 
    div_result_t result; 
    int value; 

    result = DIVIDE (&value, 5, 0); 
    if(result == div_by_zero) 
    { 
    halt_and_catch_fire(); 
    } 
}