通过x86汇编使用零除法检查在C中除法宏

通过x86汇编使用零除法检查在C中除法宏,c,x86,inline-assembly,C,X86,Inline Assembly,我想创建按零除法宏,如下所示: 除法(零布尔、命名、分母) 既然我不是assember,谁能帮我在使用x86汇编(gcc,linux)的简单宏中实现这一点 根据我的记忆,确实有一个“被零除”的eflags寄存器应该支持这一点(我可能错了)。没有理由不能将其作为C函数 div_result_t DIVIDE (int* result, int numerator, int denominator) { if(denominator == 0) { return div_by_zer

我想创建按零除法宏,如下所示:

除法(零布尔、命名、分母)

既然我不是assember,谁能帮我在使用x86汇编(gcc,linux)的简单宏中实现这一点


根据我的记忆,确实有一个“被零除”的eflags寄存器应该支持这一点(我可能错了)。

没有理由不能将其作为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();
  }
}

您想创建一个被零除的宏还是一个防止被零除的宏?通过将布尔值设置为true进行保护如果这样的操作正在进行为什么不在C中进行呢?我喜欢组装,但在这里不使用它会简单得多。。