// 计算结果,有进位借位或溢出或溢出产生,则为非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语法格式。
——元创,于 2007 年 10 月 14 日
本文介绍了一种通过汇编语言检测整数运算过程中是否发生溢出的方法,并区分了有符号和无符号整数的不同处理方式。使用AT&T汇编语法格式定义了宏来判断是否有进位或借位。
9114

被折叠的 条评论
为什么被折叠?



