首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

test与cmp授命的区别在哪

2013-03-01 
test与cmp指令的区别在哪?我分别试了两段代码while( n 5 )和while( n 0 ),在开O2的时候,生成的汇编分

test与cmp指令的区别在哪?
我分别试了两段代码while( n >= 5 )和while( n > 0 ),在开O2的时候,生成的汇编分别是
cmpl    $4, %ecx和testl   %ecx, %ecx

我想问一下,为什么后面那个不用cmpl了,是因为testl更快吗?如果效率完全一样,那编译器没必要生成不同的汇编代码啊。
[解决办法]
从资料上来看,这两组指令它们的执行效率和影响的执行微单元都是一样的。区别,最明显的应该就是指令本身所占用的字节数了,mov 和 cmp 要 5 字节,test 和 xor 只需要 2 字节;虽然你开的是 O2 选项。

热点排行