是否可以在cpu注册表中保留整个数组
发布时间:2020-12-16 07:50:01 所属栏目:百科 来源:网络整理
导读:在下面的代码中, int main( ){ register int arr[4]; /* ... */} 在某些cpu注册表中可以分配’arr’. (考虑cpu有4个或更多的寄存器). 或者编译器将忽略阵列的寄存器存储类. 解决方法 根据我的理解,答案是YES和NO. 不,因为, 任何数组元素必须明确地可寻址(例
在下面的代码中,
int main( ) { register int arr[4]; /* ... */ } 在某些cpu注册表中可以分配’arr’. 或者编译器将忽略阵列的寄存器存储类. 解决方法
根据我的理解,答案是YES和NO.
不,因为, >任何数组元素必须明确地可寻址(例如,对于16位uC / uP,其地址应始终位于0x0000到0xFFFF地址空间之间) 是的, >编译器可以为上面的数组分配寄存器,这样我们可以对它进行一些有限的操作. 见下面的代码. int main( ) { register int arr[4]; int i; arr[0] = 10; /* OK */ arr[1] = 20; /* OK */ arr[2] = 30; /* OK */ arr[3] = 40; /* OK */ for(i=0;i<4;i++) arr[i]=10; /* Error : "address of register variable 'arr' requested" */ return 0; } 所以我的最后的结论是,理想的注册存储类不应该与数组一起使用,即使你的编译器允许它. 请更正我或给予更多的投入. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |