Tag: 有条件

指针间接是否比条件更昂贵?

指针间接(获取值)是否比条件更昂贵? 我观察到大多数不错的编译器可以在不同程度上预先计算指针间接 – 可能删除大多数分支指令 – 但我感兴趣的是间接成本是否高于分支点的成本。生成的代码。 我希望如果指针引用的数据在运行时不在缓存中,可能会发生缓存刷新,但我没有任何数据可以支持。 有没有人有关于此事的可靠数据(或合理的意见)? 编辑:几张海报指出,分支成本没有“一般情况”:芯片之间的差异很大。 如果您碰巧知道一个值得注意的情况,即分支比缓存间接更便宜(有或没有分支预测),请提及它。

C条件总是会返回1还是0?

C条件语句总是返回[1或0],还是返回[0或’除零以外的值’]。 我问因为: 伪代码 – foo(地址,应该发送): 注册>> = 1 寄存器<< = 1 //清除第一个位置的位 register | = shouldSend //表示是否应该发送 如果某人在一个大于1的shouldSend值中传递了一个问题,那么就会出现问题(因为只有0是假而其他所有都是真的,技术上这是有效的)。 因为我直接用寄存器对theSend的真值进行OR运算,所以最好不要说0xFF! 我已经有了一个解决方案,所以问题更多的是出于好奇的缘故。 我想知道如果: foo(地址,应该发送): 注册>> = 1 寄存器<< = 1 //清除第一个位置的位 register | = (shouldSend> 0) //表示是否发送 解决了这个问题? 我认为现在传入的0xFF(或一般来说,大于1的东西)的问题被C条件掩盖。 但这只能保证IF C条件保证返回[0或1]。 ps – 我也意识到它可能依赖于编译器,但是ansi标准对此有何看法?