assembly EFLAGS是通用寄存器吗?

iyfjxgzm  于 2023-05-29  发布在  其他
关注(0)|答案(2)|浏览(137)

一些教程说EFLAGS寄存器是通用寄存器,而其他教程说它不是通用寄存器。
到底是哪个!

mxg2im7a

mxg2im7a1#

不,
It is not because

  • 你不能直接解决它;没有MOV EFLAGS, Value指令。
  • 不能使用EFLAGS执行计算。
  • 不能在任何指令中将EFLAGS指定为显式源或目标。

实际上,只有4条指令允许您将eflags寄存器作为一个整体进行寻址:PUSHFPOPFSAHFLAHF即使这些指令也只作用于寄存器内有限的一组位。
事实上,eflags与通用寄存器的距离是最远的。这是一个特殊用途的状态寄存器。

muk1a3rh

muk1a3rh2#

它们不是通用寄存器。而是Intel's Documentation的“程序状态和控制寄存器”,卷A(第3.4.1节,第73页):

相关问题