【发布时间】:2018-09-17 13:08:48
【问题描述】:
【问题讨论】:
-
请将代码显示为文字,而不是图片...
-
@m0skit0:
jge和jle在所有 x86 CPU 上具有相同的性能。显而易见的原因是if(x){ do stuff; }是通过对do stuff的直通实现的,或者是在相反条件上的条件跳转。 -
我看不到图片。
-
原来的if/else代码有两个分支,生成的asm也有两个分支,每个分支都有相同的条件触发器。是否使用
<或>=在数学上是相等的(当然还有正确的其他分支)。编译器必须选择一个,并且这段代码似乎没有提供任何提示哪个分支会更“热”,所以在这种情况下它几乎是随机的,也许它会保持原始源的顺序,即“ if”分支是第一个(所以条件跳转需要“else”条件)。或者它只是在评估树中首先点击了该选项。 -
投反对票,因为您的代码在图片中。一旦你解决了这个问题,我将收回反对票。
标签: c assembly compilation goto instruction-set