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 如何解释x86-64 xor后跟jle?_Assembly_X86_X86 64_Eflags - Fatal编程技术网

Assembly 如何解释x86-64 xor后跟jle?

Assembly 如何解释x86-64 xor后跟jle?,assembly,x86,x86-64,eflags,Assembly,X86,X86 64,Eflags,如果部分装配代码如下所示: xor %ebp,%ebx jle some address 这个jle是否意味着它将在(%ebx^%ebp==0)时跳转,因为这会将ZF设置为1?这是实现jle的方法之一。另一个是SF≠OF,根据手册: 因为XOR总是清除,SF!=OF减少到仅SF jle如果SF | ZF,将在布尔运算后执行,即如果结果是,那么如果%ebp和%ebx的最高有效位不同或相等,它将跳转?很难想象,除了作为一个考试题之外,什么时候它会有用。@NateEldredge:我想在我的答案

如果部分装配代码如下所示:

xor %ebp,%ebx
jle some address

这个jle是否意味着它将在(%ebx^%ebp==0)时跳转,因为这会将ZF设置为1?

这是实现jle的方法之一。另一个是
SF≠OF
,根据手册:

因为XOR总是清除,
SF!=OF
减少到仅SF


jle
如果
SF | ZF
,将在布尔运算后执行,即如果结果是
,那么如果
%ebp
%ebx
的最高有效位不同或相等,它将跳转?很难想象,除了作为一个考试题之外,什么时候它会有用。@NateEldredge:我想在我的答案中说一些关于它的话,而不是告诉你很多关于输入的信息,因为是的,这似乎不是一件有意义的事情,除非其中一个寄存器只能设置或不设置符号位,或者类似的事情。但似乎可以用异或的结果做一些事情,让编译器想测试它的
>0
。对结果执行其他操作,将其视为有符号整数,肯定会导致编译器将其与xor一起优化;这正是我们使用编译器的原因。