测试平台MH1902T(ARMv7-M)编译器arm-none-eabi-gcc.exe (GNU Tools for ARM Embedded Processors 6-2017-q2-update) 6.3.1 20170620 (release)
测试函数:
int func()
{
u8 a[256],b[32],c[16],d[8],e[4],f[3],g[2],h,*i=NULL;
a[0]=1;
b[0]=2;
c[0]=3;
d[0]=4;
e[0]=5;
f[0]=6;
g[0]=7;
h=8;
printk("a:%x,b:%x,c:%x,d:%x,e:%x,f:%x,g:%x,h:%x,i:%x \r\n",a,b,c,d,e,f,g,&h,&i);
return 0;
}
执行结果:a:2000fa10,b:2000f9f0,c:2000f9e0,d:2000f9d8,e:2000f9d0,f:2000f9cc,g:2000f9c8,h:2000f9c7,i:2000f9d4
局部变量运行时在栈中的位置顺序:h-g-f-e-i-d-c-b-a ;

如果执行memcpy(a,buf,266);则a越界之后会覆盖a之上(靠栈底方向)的地址,不会覆盖b的地址。
由此推测同类型局部变量入栈顺序为从大到小(e和i相等按照定义顺序);
