问题标签 [carryflag]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
65 浏览

assembly - 如何设置进位标志添加两个数字(32位)

我使用 read_int 得到了两个数字,并添加了两个数字。最后我检查了 EFLAGS (dump_regs)。

所以,要设置进位标志,我尝试了“4,294,967,295 + 1”,但是没有设置进位标志。('CF'没有显示在屏幕上)

如果我想设置进位标志,我需要什么数字?

我输入了 4294967295 和 1

0 投票
1 回答
2763 浏览

overflow - MIPS 中的溢出/进位标志

我搜索了一下,没有找到任何可以正确解释这一点的东西。

在 MIPS 中,你有add并且addu可以做加法。主要区别在于addu不会产生溢出异常。

假设我们有这个二进制文件(我使用了 4 位,尽管 MIPS 为 32 以进行简化):

如果我们添加1它变成1000.

add指令存在溢出且没有进位,因为正 7 变为负 1(假设 MIPS 中的二进制补码)。这也会产生溢出异常。

addu没有溢出也没有进位,因为一切都按预期进行。

现在假设你有这个二进制文件:

如果我们添加1它变成0000.

使用该add指令应该不会溢出,因为负 1 变为 0。进位标志呢,它会变为 1 吗?

addu指令会发生什么?是否认为溢出,因为 15 变成了 0?我知道没有溢出异常,但是溢出标志会发生什么?它被设置为1吗?携带标志呢?

0 投票
1 回答
314 浏览

routing - 串行通过并行展位乘法器

为什么“比特串行加免提链”?

我不明白为什么第一位串行 2 的补码块放在后续位串行加法器之前?

串行通过并行展位乘法器

0 投票
2 回答
508 浏览

assembly - 如何将两个数字相加,每个数字有 12 个字节?

我想添加两个具有 12 字节的数字并将结果存储在 16 字节的 var 中。我怎样才能做到这一点?

我想我可以将数字 1 的前 4 个字节数与数字 2 的前 4 个字节数相加,依此类推.. 但我不知道如何在我的结果变量中连接结果。如果需要,我该怎么做?这个解决方案是正确的吗?

0 投票
0 回答
489 浏览

rust - 如何在 Rust 中获取进位标志的值

我想在执行位移后获取进位标志的值。

Rust 有稳定的函数来检查溢出,如下所示:

生成这样的程序集:

然而overflowing_shr,只有当值移动其大小或更多时才返回 true,我只关心将存储在 CF 中的最低有效位,目前我想出的最好的是:

然而,这有点效率低下:

我宁愿有类似的东西:

似乎没有内在的获取 CF 并且内联汇编目前不稳定。

0 投票
0 回答
261 浏览

assembly - 为什么在这种情况下使用 IMUL r/m8 指令时设置 OF 和 CF 标志

当使用带有单个 8 位操作数的IMUL指令时,结果存储在AX寄存器中。我有以下代码

48 * 8 是 192(C0 in hex),正确地存储在AX寄存器中为00C0(见下面的输出)。AX寄存器的有符号范围是-32,768到 +32,767,无符号范围是0 到 65,535。因此,OF 和 CF 标志都应该是 clear(0)。但正如您在以下输出中看到的那样,它们都是 set(1)。

输出

0 投票
1 回答
730 浏览

assembly - 汇编 - SHL 指令不打开进位标志

我有这些代码行应该将进位标志设置为1。我通过emu8086中的模拟器运行了这段代码,它告诉我没有设置进位标志。在我看来,进位标志应该设置,因为数字0xC7(二进制:1100 0111)被移到左边,所以进位标志应该返回1。希望有人能帮忙。

0 投票
2 回答
703 浏览

gcc - 有人可以解释一下这个内联#define 程序集在做什么吗?

我是一个偶尔的 C 程序员。我在 Turbo C 程序中遇到过这段内联汇编代码

dst 和 src 都是无符号的 16 位整数。

它不会在 GNU C++ 中编译。有人可以解释一下它在做什么吗?蒂亚!

0 投票
0 回答
106 浏览

c - 让 C 编译器使用 x86 移位的进位标志结果?

是否可以在没有内联汇编的情况下从 C 中的 x86 SHL/SHR/SAR 指令中捕获进位标志?

我找不到任何内在的转变,而且编译器似乎没有选择将使用它的模式。

假设我想要以下内容:

我可以编写什么 C 代码来让编译器生成那种输出?

我失败的尝试

0 投票
1 回答
62 浏览

c++ - 如何做由多个整数组成的数字的加法

我目前正在尝试实现一个可以计算一些加密哈希函数的程序。我正在制作一个 BigInt 类,我希望它能让我用任意大小的整数进行基本的数学和逻辑运算。

我正在学习的部分课程:

我希望有一些方法可以添加无符号整数并获得溢出位,以及将这个溢出位传递给下一个整数的方法,就像在汇编语言中一样,我相信 ARM 汇编中的操作码是'ADCS' 将设置溢出位,并将溢出位带入下一个加法和。但是,我四处搜索,似乎在 C++ 语言中找不到任何功能。

编辑:以防万一有人偶然发现,这是我对加法功能的实现。