为什么一个大的比较变成1行汇编代码?

时间:2018-12-01 02:18:19

标签: c++ if-statement assembly x86

根据comment here中的建议,我试图了解Compiler Explorer的工作方式。我的输入是以下代码:

int main() {
    double x,y,x0,y0,x1,y1;
    x = 10;
    y = 10;
    x0 = 5;
    y0 = 5;
    x1 = 15;
    y1 = 15;
    if (x > x0 && x < x1 && y > y0 && y < y1)
        return 1;
    return 0;
}

结果是:

    mov     eax, 1
    ret

很多年前,我已经学习了汇编程序的基础知识,但是我不知道这是否有意义。可以? (我试图发现的是,如果在两个退货之间添加“ else”会不会对性能产生任何影响。根据此网站,这没有。但是我说得对吗?)

1 个答案:

答案 0 :(得分:3)

条件为真。编译器对其进行了优化。它会为return 1;生成代码。