我想创建除零宏,如下所示:
DIVIDE(zero_exception_boolean, 分子, 分母)
由于我不完全是汇编人员,所以任何人都可以帮助我在使用 x86 程序集(gcc、linux)的简单宏中实现此目的。
据我记得,确实有“除以零”的标志寄存器应该支持这一点(我可能是错的)。
最佳答案
没有理由不能将其作为 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();
}
}
关于c - 通过 x86 汇编进行零除检查的 C 除法宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23679952/