问题标签 [eflags]

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 回答
110 浏览

assembly - x86架构是否以特殊方式处理零的二进制减法/与零比较?

在再次处理 x86 程序集时,我遇到了一种情况,我试图了解如何解释 cpu 的行为。

当用命令比较两个无符号整数时cmp,进位和零标志的状态反映了两个整数的关系。因为在没有将减法结果写入最终寄存器的情况下cmp表现得像命令,所以进位标志占据了借位标志的一部分。sub此外,减法只不过是反转值的加法。因此,cpu 不是减 1,而是加 -1。

现在,当被减数小于减数时,加法cmp将导致无进位,但由于需要借位,必须设置进位标志。所以你可以说进位标志必须在加法后反转以获得正确的状态。
前一个假设适用于无符号整数的每种组合,但有一个例外:

从任何无符号整数中减去零与向它们添加零相同,这不会产生进位。因此,反转进位会导致设置进位标志不正确,因为被减数(<0)大于减数(0),这就是为什么不允许设置进位标志,因为不需要借位。

我用一个小汇编程序检查了这种行为,当然,cpu 不会产生设置进位标志。但这只有在 cpu 还检查减数为零(并且被减数不为零,minuend = subtrahend -> 零标志设置)时才有可能。

我的假设是正确的还是我遗漏了什么?

0 投票
1 回答
545 浏览

assembly - FLAGS 寄存器多久在 asm 中更新一次?

在VS2013中调试x86汇编代码时,需要检查FLAGS寄存器的内容。但是,当我在注册窗口中启用“标志”时,我得到了:

OV = 0 上 = 0 EI = 1 PL = 1 ZR = 0 AC = 1 PE = 0 CY = 1

就我而言,我想检查 PL 符号值的状态。

那么多久更新一次?每一个动作?每个 ALU 操作?

编辑:我的 x86 教科书 kip irvine 汇编语言说

“Sign 标志是目标操作数高位的副本,表示设置为负,清除为正。(假设为零为正。)”

那么有一个目标操作数的指令?我不确定,因为这看起来很模糊。

0 投票
0 回答
48 浏览

assembly - 装配 - 负负负时携带标志

如果 CPU 像这个问题一样将减法视为加法。
那么 (-1) - (-2) 应该是 FF...FF + 00...02,并且应该设置 CARRY FLAG。
我写了 c 代码在 linux 上测试 (-1) - (-2),但发现 CARRY FLAG 没有设置。
CPU如何处理这种情况。

反汇编代码

GDB 测试

0 投票
1 回答
44 浏览

assembly - 数据溢出时标志寄存器中的 CF、OF

使用 Intel x86 / emu8086 仿真器,当具有以下值的字节溢出时:

为什么CF是0,而OF也是0?谢谢

0 投票
0 回答
54 浏览

assembly - 汇编 x86 中的 Imul 指令

你好,所以我对x86中的标志寄存器有疑问。我怎么知道 CF/OF 是 1 还是 0。

我看的是最重要的一点吗?如果是这样,OF/CF 会是 1 吗?

0 投票
1 回答
196 浏览

assembly - 8位寄存器中0-1操作的进位标志

我在 emu 80x86 IDE 中尝试了以下代码:

在模拟器中显示的输出中al=FF,我确实理解它,但我不明白为什么在标志部分cf=1

0 投票
2 回答
190 浏览

assembly - 算术恒等式和 EFLAGS

因为 −x = not(x)+1 意味着 ab = a+not(b)+1,所以

相当于

某些寄存器在哪里 temp 被认为是易失性的?

换句话说,后者是否以完全相同的方式影响 EFLAGS?如果不是,又怎么能强迫呢?

0 投票
0 回答
78 浏览

assembly - 了解 cmp 指令中的派对标志

我想我不太了解PFeflags 寄存器中的内容。以下是我为了解其工作原理所做的两个比较:

在第一个操作中,比较将产生1or0x01并且在第二个操作中它将产生2or 0x10。那么为什么在第一个而不是第二个中设置奇偶校验标志,因为它们都有一个位设置为 1。

0 投票
0 回答
472 浏览

assembly - 为什么 mov 不设置零标志?

向寄存器添加值不会改变零标志的原因是什么?例如,假设我有:

我还需要进行第二次操作来检查移动的值是否为零,例如:

但这样做的理由是什么?在不改变标志的情况下,电路是否更简单/指令更快?

0 投票
0 回答
53 浏览

assembly - 何时使用溢出标志?

我想我已经开始学习关于何时设置溢出标志的用例:当有符号位在有符号算术上发生变化时。例如以下三种情况:

但是,使用overflow标志时有哪些应用程序或用例?在我所掌握的最低 asm 知识中,似乎一直使用Zero 和Sign 标志进行比较,但是在哪些用例中使用了Overflow 标志?