一个下雨的下午,我感到无聊,于是想出了这个东西:
int ia_array[5][5][5]; //interger array called array
{
int i = 0, j = 0, k = 0;//counters
while( i < 5 )//loop conditions
{
ia_array[i][j][k] = 0;//do something
__asm inc k;//++k;
if( k > 4)
{
__asm inc j; //++j;
__asm mov k,0;///k = 0;
}
if( j > 4)
{
__asm inc i; //++i;
__asm mov j,0;//j = 0;
}
}//end of while
}//i,j,k fall out of scope
这段代码的功能相当于三个嵌套的for循环。然而,在for循环中,您不能使用__asm语句。此外,您可以选择不将计数器放在作用域中,以便可以将它们重用于其他循环。我已经查看了两者的反汇编结果,我的替代方案有15个操作码,而嵌套的for循环有24个。因此,它可能更快吗?换句话说,__asm inc i;比++i;更快吗?
注意:我不打算在任何项目中使用此代码,只是出于好奇心。感谢您的时间。
asm inc i
比++i
更快,那么你的编译器需要被带到后面枪毙。 - Mike Seymourmov j,0
和j = 0
说同样的话。 - dreamlax