C语言数组:一维与多维的深入解析
1. 一维数组操作优化
在对一维数组进行操作时,我们可以通过不同的方式来优化代码效率。下面是几种不同的数组复制方式及其分析。
1.1 初始版本
// 代码片段1
000000ba
20790000
0000
L20005:
movl
_p2,a0
000000c0
22790000
0000
movl
_p1,a1
000000c6
2290
movl
a0@,a1@
000000c8
58b90000
0000
addql
#4,_p2
000000ce
58b90000
0000
addql
#4,_p1
000000d4
52b90000
0000
addql
#l,_i
000000da
7032
L30:
moveq
#50,d0
000000dc
b0b90000
0000
cmpl
_i,d0
000000e2
5ed6
jgt
L20005
这个版本的代码在复制整数和递增指针以及控制循环终止方面有较短的代码,但在间接寻址之前仍需要将指针变量复制到地址寄存器中。
1.2 使用寄存器指针变量
void
try4()
{
register int *p1, *p2;
register int i;
for( i = 0, p1 = x, p2 = y; i < SIZE; i++ )
*p1++ = *p2