作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是:
PUSHQ %reg
POPFQ
在 x86_64 上设置标志的最直接方法?
最佳答案
这一切都取决于旗帜。
一些标志允许您直接设置位。例如,STC
设置进位标志,CLC
清除进位标志。如果你想操纵,比如说,陷阱标志,你必须做这样的事情(假设 NASM 和 16 位汇编):
pushf
pop ax
or ax, 0x100
push ax
popf
当然,您也可以间接设置或清除标志。例如:
xor ax, ax
此代码最直接地通过 XOR 将 ax 设置为零。间接地,它具有同时设置 ZF(零标志)和 PF(奇偶校验标志)的副作用。大多数标志位通常可以使用类似类型的间接操作标志的方法。
顺便说一下,您在问题中使用的机制可能会产生意想不到的后果。压入标志,修改您感兴趣的特定标志,然后弹出标志是更好的做法。任意将特定值弹出到标志中可能会造成严重破坏,除非您绝对确定更改它们不会产生任何后果(即,没有代码进一步依赖于上面的标志)。
关于assembly - PUSHQ POPFQ 是在 x86_64 上设置标志的最直接方式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41912688/
是: PUSHQ %reg POPFQ 在 x86_64 上设置标志的最直接方法? 最佳答案 这一切都取决于旗帜。 一些标志允许您直接设置位。例如,STC设置进位标志,CLC清除进位标志。如果你想操纵
我是一名优秀的程序员,十分优秀!