6568| 2
|
求问__attribute__((at(0x08040000)))这种写法为什么会增加padding(内存对齐) |
1金钱
最佳答案当没有这个数组的时候,你的程序只有50k,那么编译器从0x08000000开始摆,摆到0~50k地址空间就可以了,所以总占用50k(程序);
当有这个数组,只使用__align(32)语法对齐,编译器会在原来的基础上,把你这个数组按32字节对齐,紧挨着前面的50k存放,所以总占用空间近似于50k(程序)+1M(数组大小);
当这个数组又强制要求必须从0x08040000地址开始摆(即__attribute__((at(0x08040000)))),那么编译器只得将这个数组从256k起 ...
| ||
| ||
坚决不用寄存器,拒绝重复造轮子。
|
||
| ||
|手机版|OpenEdv-开源电子网
( 粤ICP备12000418号-1 )
GMT+8, 2025-2-28 03:38
Powered by OpenEdv-开源电子网
© 2001-2030 OpenEdv-开源电子网