当前位置: 代码迷 >> 汇编语言 >> test与cmp授命的区别在哪
  详细解决方案

test与cmp授命的区别在哪

热度:546   发布时间:2016-05-02 04:57:20.0
test与cmp指令的区别在哪?
我分别试了两段代码while( n >= 5 )和while( n > 0 ),在开O2的时候,生成的汇编分别是
cmpl    $4, %ecx和testl   %ecx, %ecx

我想问一下,为什么后面那个不用cmpl了,是因为testl更快吗?如果效率完全一样,那编译器没必要生成不同的汇编代码啊。

------解决方案--------------------
从资料上来看,这两组指令它们的执行效率和影响的执行微单元都是一样的。区别,最明显的应该就是指令本身所占用的字节数了,mov 和 cmp 要 5 字节,test 和 xor 只需要 2 字节;虽然你开的是 O2 选项。
  相关解决方案