首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >条件旗组件- cmp,测试

条件旗组件- cmp,测试
EN

Stack Overflow用户
提问于 2016-11-02 18:37:04
回答 1查看 285关注 0票数 1

我很难理解程序集中的条件代码。右边的程序集用于左边的funA(),但是在程序集中的第3-4行中我遇到了问题。

以下是我的思考过程:

代码语言:javascript
复制
cmp rax, rcx // a[idx] <= *b

但是,代码中的实际if语句正好相反。我知道它与程序集中的方式有关,条件执行是它生成的reverse...therefore > *b。这跟"jle“有关吗?有人能给我解释一下吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-02 18:40:19

如果您查看.L1和.L2,JIT编译器刚刚决定反转顺序--它首先将else代码放在首位,然后反转条件。jle是“如果小于或等于的话跳”,因此它变成了C#的等价物:

代码语言:javascript
复制
if (a[idx] <= *b)
{
    *b = *b + *b;
}
else
{
    *b = a[idx];
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40387390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档