问题标签 [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 回答
161 浏览

assembly - 为什么在这个例子中没有设置溢出标志?

我正在尝试为我的 x86 汇编课程回答教科书中的一个问题。其中一个示例要求解释为什么 over 标志会帮助您确定在这种情况下 al 的最终值是否在有效的有符号范围内。

我最初的想法是应该调用溢出标志,因为 -1 + 130 = 129,它超出了有符号 8 位整数的范围,而 al 是 EAX 寄存器的最低 8 位。但是当我在 Visual Studio 中运行此代码时,我没有看到设置了溢出标志。

0 投票
1 回答
267 浏览

assembly - 如何解释 x86-64 xor 后跟 jle?

如果部分汇编代码如下:

这个 jle 是否意味着它会在 (%ebx ^ %ebp == 0) 时跳转,因为这会将 ZF 设置为 1?

0 投票
1 回答
142 浏览

performance - 现代 CPU 是否需要花费大量资源来保持标志更新?

据我了解,在现代无序 CPU 上,最昂贵的事情之一就是状态,因为必须在多个版本中跟踪该状态,在许多指令中保持最新等。

一些指令集(如 x86 和 ARM)广泛使用标志,这些标志是在成本模型与今天不同时引入的,并且标志只需要几个逻辑门。诸如每条算术指令设置标志以检测零,进位和溢出之类的东西。

这些在现代乱序实施中保持更新的成本是否特别昂贵?这样,例如 ADD 指令会更新进位标志,并且必须对其进行跟踪,因为尽管它可能永远不会被使用,但有可能其他指令可以在 N 条指令之后使用它,而 N 没有固定的上限?

在没有这些标志的 MIPS 等指令集架构上,整数运算(如加法和减法)是否更便宜?

0 投票
2 回答
167 浏览

assembly - CF 标志的难以理解的行为

假设有一段代码:

在这种情况下,CF = 0 标志,但在我看来它应该等于 1,因为减法运算是在加法运算上实现的,并且处理器不知道我们将其作为输入提供什么,无论是有符号还是无符号数字,它只是做它的工作。

也就是说,上面的代码等价于以下内容:

在al寄存器中输入值12,即0000 1100

在bl寄存器中输入值4,即0000 0100

接下来是减法运算,因为第一个操作数是正数,所以没有转换为附加代码。由于第二个也是正数,所以也没有变换,但是由于进行了减法运算,所以将第二个操作数翻译成附加代码,处理器进行加法运算(减法是通过加法来实现的),即:

也就是说,我们得到了正确的结果 - 8,但如果调试它,CF = 0。这是为什么?超出位网格的那个放在 CF 中,但 CF = 0。

0 投票
2 回答
115 浏览

assembly - 如何在 GPR 的特定位中设置进位标志而不进行移位/旋转?

我正在为英特尔 80386 处理器编写 NASM 中的程序,我需要在 GPR(通用寄存器)的特定位中设置进位标志的值,而不更改寄存器中的其他位。

是否有可能在不使用任何形式的轮班/轮换的情况下这样做?

0 投票
0 回答
144 浏览

assembly - 如何使用 pushfq 和 popfq 设置 SF

正如标题所示,我想使用命令 pushfq 和 popfq 设置 SF=1(如果之前是 1,我应该保持这种状态)。

首先,我不明白将 rflags 推入和弹出堆栈会如何改变标志值。

架构是 Intel x86-64

0 投票
0 回答
61 浏览

assembly - 如果我对两个 64 位寄存器的低 32 位执行 32 位操作,条件标志将如何受到影响?

假设我在 %​​rdi 中有数字 0xFFFFFFFFFFFFFFFF,在 %rsi 中有 0x7FFFFFFFFFFFFFFF。假设我执行 subl %esi, %edi。零标志会设置为 1 还是 0?或者如果我在低 32 位上执行 addl 会导致溢出。所以添加 %esi, %edi。我的 CF/OF 标志和零标志会设置为 1,还是 ZF 标志会保持为零?

0 投票
1 回答
114 浏览

assembly - 如果AF标志为1,如何跳转?

我想检查辅助进位标志是否为 1 然后做点什么。我找不到任何关于仅辅助进位标志的参考。

0 投票
1 回答
247 浏览

assembly - x86 程序集 MASM 中零标志的默认值是多少?

例如,如果我有以下代码:

零标志的默认值是否未定义?

0 投票
1 回答
73 浏览

assembly - 为什么半字节之间有借位时辅助标志为0

在 EMU8086 上进行测试,代码片段如下:

模拟器显示AF为0

手动减法时,我们得到 7 - 4 = 3,这里没问题。然后 2 - 4,然后我们必须从下一个半字节借用。所以根据我的理解,AF应该是1。