美文网首页
条件分支与条件传送问题

条件分支与条件传送问题

作者: ProgrammingGuy | 来源:发表于2019-10-27 17:31 被阅读0次
    // return absdiff;
    int ct(int x, int y)
    {
        int lval = x - y;
        int rval = y - x;
        if (x > y)
        {
            rval = lval;
        }
        return rval;
    }
    
    int cb(int x, int y)
    {
        if (x > y)
        {
            goto t;
        }
        goto d;
    t:
        return x - y;
    d:
        return y - x;
    }
    
    long cread(long* xp)
    {
        return (xp ? *xp : 0);
    }
    

    ct为条件传送示例,cb为条件分支示例。条件传送是先计算出该返回的两个值,然后根据条件来返回其中一个,因为有流水线的优势,所以这个方法在现代计算机中可以获得性能优势。条件分支为传统方式,根据测试条件来执行跳转,性能相对弱,特别是预测分支失败之后,需要很多时钟周期回到正确的分支。
    cread示例说明了条件传送不适用的地方,如果xp是空指针,在条件传送流程中会对空指针取值,就引发了空指针引用问题。

    相关文章

      网友评论

          本文标题:条件分支与条件传送问题

          本文链接:https://www.haomeiwen.com/subject/bwcmvctx.html