gpt4 book ai didi

检查值是否在音叉反汇编中

转载 作者:行者123 更新时间:2023-11-30 15:00:12 25 4
gpt4 key购买 nike

我使用的是RH850 Controller 和C语言编译器greenHills。在范围内检查如下:

if ((x>=2) && (x<=5))
y=1

它是使用 Osize 选项编译的。编译后看起来像这样:

zxb r7
addi -2,r7,r1
cmp 3,r1
bnh .L1295

.L1295y=1 的标签(这个 y=1 用于其他更改,也用于其他一些条件) 。两条指令影响相同的标志。

检查(x>=2)是通过以下代码实现的:addi -2,r7,r1。但这条指令的标志结果,会被下一条指令清除,存在不正确的情况。至少我是这么认为的。

显然我错了。有人可以解释一下这个反汇编程序片段吗?

最佳答案

它正在将支票转换如下:

  x >= 2 && x <= 5
= (x - 2) >= (2 - 2) && (x - 2) <= (5 - 2)
= (x - 2) >= 0 && (x - 2) <= 3

代码将 r1(即 x - 2)与 3 进行比较,“如果不是更高则分支”,意思是 r1<0、1、2或3中的(或2、3、4或5中的x)将分支到设置y = 1

关于检查值是否在音叉反汇编中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42257128/

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