汇编器具有以下代码:
sub$0x22,%eax # %eax = %eax - 22
cmp$0x7,%eax # %eax > 7 then jump *this is where I have trouble*
ja some address # jump if C = 1 or Z = 1
我的目标是不跳。 我已经尝试过%eax = 30、14、28、16、0、22
的情况问题: 我不明白为什么在我尝试过的所有情况下c = 0和z = 0。
答案 0 :(得分:1)
add_filter( 'woocommerce_countries', 'change_country_order_in_checkout_form' );
function change_country_order_in_checkout_form($countries)
{
$usa = $countries['US']; // Store the data for "US" key
unset($countries["US"]); // Remove "US" entry from the array
// Return "US" first in the countries array
return array('US' => $usa ) + $countries;
}
(十进制为34)大于所有这些示例eax值(假设它们为十进制)。因此,相减的结果为负。但是“负”整数只是一个最高有效位为1的整数,也可以解释为一个较大的无符号数。
从概念上而不是标志上的实际逻辑上考虑0x22
可能更容易。 (see this answer)您可以将ja
视为无符号比较。因此,这些负数看起来像是大于7的真正大数。如果您改用ja
指令,则其行为应与预期的一样。可以将其视为经过签名的比较。