| // 计算结果,有进位借位或溢出或溢出产生,则为非0,否则为0 // 调用完宏后直接加以判断 int g_iResult = 0; // 对有符号整数数学计算进行判断 #define CARRY \ __asm__ ("jo 0f\n\t" \ "movl $0, g_iResult\n\t" \ "jmp 1f\n\t" \ "0:\n\t" \ "movl $1, g_iResult\n\t" \ "1:\n\t"); // 对无符号整数数学计算进行判断 #define OVER_FLOW \ __asm__ ("jc 0f\n\t" \ "movl $0, g_iResult\n\t" \ "jmp 1f\n\t" \ "0:\n\t" \ "movl $1, g_iResult\n\t" \ "1:\n\t");
对于数学计算是无符号还是有符号,和参与计算的整型变量本身没有关系,而是视程序把计算结果当成有符号还是无符号而定。汇编代码为AT;T语法格式。
| |