- 论坛徽章:
- 0
|
当两种(ARRAY, POINTER)数据是全局变量时应该和平台无关。array名字是常量,指针是变量。
当他们是局部变量时候,也是array名字效率高,和平台也应该无关(但不确定)。
通过以下代码可以看出。
[/CODE]
int a[100];
int *p = a;
main()
{
int d[100];
int *q = malloc(100);
int c, i;
i = 12345678;
c = a[4];
c = p[4];
c = d[5];
c = q[5];
}
.file "tp.c"
.globl p
.data
.align 4
.type p, @object
.size p, 4
p:
.long a
.text
.globl main
.type main, @function
main:
pushl %ebp
movl %esp, %ebp
subl $424, %esp
andl $-16, %esp
movl $0, %eax
addl $15, %eax
addl $15, %eax
shrl $4, %eax
sall $4, %eax
subl %eax, %esp
subl $12, %esp
pushl $100
call malloc
addl $16, %esp
movl %eax, -12(%ebp)
movl $12345678, -4(%ebp)
movl a+16, %eax
movl %eax, -8(%ebp)
movl p, %eax
addl $16, %eax
movl (%eax), %eax
movl %eax, -8(%ebp)
movl -392(%ebp), %eax
movl %eax, -8(%ebp)
movl -12(%ebp), %eax
addl $20, %eax
movl (%eax), %eax
movl %eax, -8(%ebp)
leave
ret
.size main, .-main
.comm a,400,32
"1111" 46L, 771C
[/CODE]
原帖由 思一克 于 2007-8-21 08:06 发表 ![]()
int a[128];
int *b = malloc[128];
a 是一个常量。b是变量
a[100]和b[100], 前者不用运算,直接到地址取数值。b[100]要计算 |
|