聪明的“编译器”



聪明的“编译器”

这次讨论的话题是为什么编译器自作主张一般把“条件语句”取反。。

编译器把“条件语句”取反的原因是为了节省开销。。看下边这两个例子

例1.

while:

cmp a,10

jbe end

inc a

jmp while

end:

…….

例2.

while:

cmp a,10

ja continue

jmp end

continue:

inc a

jmp while

end:

…..

从这两个例子中可以看到,都是这么一句代码:while(a>10)a++;但例1用了6句,例2用了8句。。编译器

还是很聪明的嘛。。说根到底还是人弄出来的编译器。。还是人聪明。。呵呵

不过在有些时候不必取反,在后置条件(上面两例是前置条件)的情况下。。。。。

repeat:

inc a

cmp a,10

jl repeat

end:

……..