假设
andl %ecx %edx
使用GAS语法中的上述汇编代码执行。该代码是否会使用AND结果设置ZF / SF / PF标志?或者这个代码只是AND两个操作数并且对标志没有任何作用?
我知道有TEST和CMP指令设置标志,但如果我可以使用AND来设置标志,代码会更短。
答案 0 :(得分:2)
旗帜会受到影响。实际上,几乎任何执行某些算术/按位/逻辑运算的指令都会修改标志寄存器。
我建议您阅读英特尔开发人员手册以查找此信息。大多数(如果不是全部)有关x86架构和指令的问题都可以通过使用来解答。
AND
指令使AF标志未定义,清除CF和OF标志,如果结果的低字节具有奇数奇偶校验则设置PF,如果结果为负则设置SF(视为两个' s补码),如果结果为零则设置ZF。