43得票2回答
使用进位标志进行高效的128位加法

我在我的C++代码的核心循环中使用了一个128位整数计数器。(不相关的背景:实际应用是在正常网格上评估有限差分方程,这涉及重复递增大整数,即使64位精度也不足,因为小舍入累积足以影响答案。) 我将整数表示为两个64位无符号长整型。现在我需要通过一个128位常量来递增这些值。虽然不难,但你必须...

37得票3回答
GDB与汇编:打印进位标志的状态

我有一个使用x86汇编编写的程序,正在使用gdb进行调试。是否可以通过像“print $cf”这样的方式在gdb中打印进位标志的状态?

28得票2回答
Z80上的溢出和进位标志

我已经完成在我的Z80核心上实现ADD A,r一组操作码。我对进位和溢出标志有点困惑,但我想向社区请教以确认我的答案是否正确。 从我所看到的情况来看,Z80中的ALU并不关心有符号/无符号运算,它只是将比特加起来。这意味着如果两个8位值相加导致一个9位值,那么进位标志将被设置。这包括两个负的...

22得票8回答
将汇编中的ADC(带进位加法)转换为C++

有一条x86汇编指令ADC。我发现这意味着"带进位相加"。这是什么意思/作用?如何在C++中实现这个指令的行为? 信息: 在Windows上编译。我正在使用32位Windows安装程序。我的处理器是英特尔的Core 2 Duo。

22得票2回答
汇编语言 - 进位标志 VS 溢出标志

我有下面的代码:mov al, -5 add al, 132 add al, 1 根据我的检查,溢出标志和进位标志将在第一次操作中设置,在第二次操作中仅会设置溢出标志。 但我不明白为什么: 在无符号数中,结果为143(8FH),适合8位无符号数(小于255)=> 进位标志不应该被设置。在...

19得票12回答
当一个字节溢出时,实际上会发生什么?

一个Byte溢出时实际上会发生什么? 假设我们有:byte byte1 = 150; // 10010110 byte byte2 = 199; // 11000111 如果我们现在进行这个加法byte byte3 = byte1 + byte2; 我认为最终byte3将等于94,但实际...

14得票2回答
x86中的进位/溢出和减法

我试图理解x86中的溢出和进位标志。 据我所知,对于有符号2进制数的加法,这些标志只能通过以下四种方式之一产生(我的示例是4位数): pos+pos = neg(溢出) 0111 + 0001 = 1000(7 + 1 = -8) pos+neg = pos(进位) 0011 + ...

14得票5回答
检查进位标志是否设置

如何使用内嵌汇编[gcc,intel,c]在操作后检查进位标志是否设置?

12得票2回答
请问这个内联 #define 汇编是在做什么?

我是一名偶尔使用C语言的程序员。在一个Turbo C程序中,我遇到了这段内嵌汇编代码。 Translated: 我是一位偶尔使用C语言的程序员。在Turbo C程序中,我遇到了这段内嵌汇编代码。#define ADC(dst,src) { asm MOV AX, dst; asm A...

8得票3回答
混淆:关于ARM文档中的进位标志的疑惑

在ARM文档这里中提到: 如果减法的结果为正数或零,则会发生进位carry。 我从这个SO答案中了解到,在无符号数减法中,当被减数(减数)大于减数(被减数)时,会设置进位标志carry flag。 因此,考虑以下示例: r1 = 5 r2 = 10 CMP r1, r2 Com...