Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly LAHF(用标志寄存器的低位字节加载AH)_Assembly_X86_Flags - Fatal编程技术网

Assembly LAHF(用标志寄存器的低位字节加载AH)

Assembly LAHF(用标志寄存器的低位字节加载AH),assembly,x86,flags,Assembly,X86,Flags,使用LAHF可以使用标志寄存器的高阶字节加载AH寄存器 标志寄存器有7个未定义的寄存器。我有两个问题: LAHF操作中是否考虑了未定义位 如果考虑,标志寄存器中的未定义位是作为二进制1还是二进制0 标志SF、ZF、AF、PF和CF分别复制到AH位7、6、4、2和0。AH的剩余位5、3和1的内容通常被认为是未定义的。如果您查看较旧的指令集,例如 然而,最近的详细说明了LAHF的显式位状态: Operation AH ← EFLAGS(SF:ZF:0:AF:0:PF:1:CF); “未定义”表示保

使用
LAHF
可以使用标志寄存器的高阶字节加载AH寄存器

标志寄存器有7个未定义的寄存器。我有两个问题:

  • LAHF操作中是否考虑了未定义位
  • 如果考虑,标志寄存器中的未定义位是作为二进制1还是二进制0

  • 标志SF、ZF、AF、PF和CF分别复制到AH位7、6、4、2和0。AH的剩余位5、3和1的内容通常被认为是未定义的。如果您查看较旧的指令集,例如

    然而,最近的详细说明了LAHF的显式位状态:

    Operation
    AH ← EFLAGS(SF:ZF:0:AF:0:PF:1:CF);
    

    “未定义”表示保留位用于将来的指令集扩展。不应以任何方式依赖它们。也就是说,不要假设未定义的位已设置,也不要假设它们未设置。因此,在执行lahf指令时不考虑它们?如果您的代码在较新的处理器上执行,则可能会考虑这些位(lahf指令的含义自然会扩展到包括这些位的副本)。您不应该编写任何代码,无论它们是否在观测上表现不同。