小编pol*_*sop的帖子

为什么这里用jbe而不是ja?

int get_cont(int *p1, int *p2) 
{       
    if (p1 > p2)  
        return *p2;
    else
        return *p1;
}
Run Code Online (Sandbox Code Playgroud)

汇编代码为:

    movl    8(%ebp), %eax
    cmpl    12(%ebp), %eax
    jbe    .L2
    movl    12(%ebp), %eax
    movl    (%eax), %eax
    jmp    .L3
Run Code Online (Sandbox Code Playgroud)

为什么使用jbe?条件是p1 > p2. 为什么不使用ja

jajbe都是无符号跳转操作码。为什么编译器反转条件?

c x86 assembly if-statement

2
推荐指数
1
解决办法
78
查看次数

标签 统计

assembly ×1

c ×1

if-statement ×1

x86 ×1