问题标签 [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.
assembly - 为什么奇偶校验标志为 1 而个数为奇数
执行以下两条指令后:
我得到奇偶校验标志 = 1(表示偶数个)
但是,递减值的二进制表示是:
1111 1101 0101 0000
它有 9 个(即奇数个)。
此外,NEG BX
在此之后执行会导致 PF = 0。但是,2 的补码是:
0000 0010 1011 0000
有偶数个。所以我希望PF = 1。
assembly - EFLAGS 状态
在过去的几天里,我一直在努力解决试图获得 EFLAGS 状态的奇怪行为。为此,我编写了以下代码:
当它运行时,我得到:
当我两次打印标志时,它变得越来越奇怪
当我尝试打印 6 次时它发生了变化
最后是最奇怪的(至少对我而言),我打印了 8 次
那么,为什么我第一次得到 0x246 呢?根据英特尔的手册,不应该是 0x2 吗?为什么当我尝试打印更多次并继续更改时它会发生变化?
assembly - X86 FLAGS寄存器中的方向标志有什么作用?
我目前正在学习基于 x86 的处理器中的 FLAGS 寄存器。我知道 DF(Direction Flag) 用于决定字符串操作是向后还是向前发生。无论操作如何进行,它仍然会得到相同的结果。来源、x86 中的方向标志和https://pdos.csail.mit.edu/6.828/2005/readings/i386/s02_03.htm。在第一个来源中,人们解释了 DF 标志是如何工作的,但应用程序非常模糊。
我的问题是这个功能的应用是什么?我知道它是如何工作的,但我无法真正弄清楚它的用途。
assembly - 如何在 8 位模式下进行 x86 算术并更新标志?
我想使用 x86 指令模拟 8051。在 32 位模式下,我必须向左旋转才能获得进位标志。获取溢出标志的步骤更多。你知道如何对 AL、BL、CL、DL 进行算术运算和更新标志吗?
assembly - 哪个寄存器是标志寄存器
在 64 位处理器中,我们有 16 个寄存器。其中一些是为特殊目的而保留的,例如 %rsp。
对于标志寄存器,它是 16 个寄存器之一吗?
如果是,我们怎么知道它正在使用哪个寄存器,比如 $rax?如果我们不知道它是什么,我们是否有机会意外覆盖它(假设我们直接编写汇编代码)?
如果不是,那么实际上寄存器比 16 个寄存器多吗?