gpt4 book ai didi

assembly - x86-64组装测试-JLE

转载 作者:行者123 更新时间:2023-12-04 10:52:49 27 4
gpt4 key购买 nike

这个:

testl   %esi, %esi
jle .L3
movl %esi, %eax


如果 testlesi进行逻辑“与”运算,则结果永远不能小于,而只能等于,如果 esi为0。则无法达到 movl。没错,或者我缺少一些东西。

第二步:

f1:
pushq %rbp
movq %rsp, %rbp
testl %esi, %esi
jle .L3
movl %esi, %eax
.L2:
incb (%rdi)
incq %rdi
decq %rax
jne .L2
.L3:
popq %rbp
ret


在假设的C转换中,如果 .L3pop组成,则 ret并且发生分支,可以确定函数返回的值吗?

最佳答案

“小于或等于”定义为:ZF=1 or SF != OF

TEST指令根据操作数之间的逻辑ZF设置SFAND,并清除OF

因此,实际上,您最终遇到条件ZF or SF,意思是“小于或等于零”(即,在这种情况下,如果使用(signed int)esi <= 0,则将进行跳转)。

编辑:对于您的问题的第二部分,它看起来像在做这些事情:

void f1(char *c, int len)
{
if (len > 0) {
for (i = len; i != 0; i--) {
(*c)++;
c++;
}
}
}

关于assembly - x86-64组装测试-JLE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17411048/

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