gpt4 book ai didi

assembly - 汇编 TEST 指令如何与这些跳转指令一起工作?

转载 作者:行者123 更新时间:2023-12-02 09:13:40 25 4
gpt4 key购买 nike

使用 AT&T 汇编语法,我试图了解 teSTL 在汇编代码中的使用方式。具体来说:

testl  %edx, %edx
jle .L3

我知道 teSTL 执行相同值的按位 and 来设置条件标志,但是如果它是“小于或等于则跳转”,我该如何解释不是比较两个值吗?

最佳答案

以下是英特尔官方测试文档的摘录:

Operation
TEMP ← SRC1 AND SRC2;
SF ← MSB(TEMP);
IF TEMP = 0
THEN ZF ← 1;
ELSE ZF ← 0;
FI:
PF ← BitwiseXNOR(TEMP[0:7]);
CF ← 0;
OF ← 0;

在 jle 上也是如此:

Jump if less or equal (ZF=1 or SF≠OF)

因此,如果 edx 为 0,就会执行跳转(因为 edx AND edx = edx 并且仅当 edx 为 0 时才为 0 ,并且因为当 AND 的结果为 0 时,ZF 设置为 1)或者如果 edx 的最高有效位为 1(因为SF = edx AND edx 的最高有效位(或者等效地,edx 本身),并且 OF 始终为 0 ,这意味着仅当 SF ≠ 0SF ≠ OF 才为真。

IOW,仅当 edx 解释为有符号整数时 ≤ 0,或者等效地,当 edx 为 0 或大于或等于时,才会执行跳转解释为无符号整数时为 0x80000000。

关于assembly - 汇编 TEST 指令如何与这些跳转指令一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14595784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com