请问#pragma DATA_ALIGN有什么作用?
答案:2 悬赏:80
解决时间 2021-04-26 20:03
- 提问者网友:北故人
- 2021-04-26 14:58
下面是我在EDMA的一个例程中摘录的几句话:#pragma DATA_ALIGN(ping,128);#pragma DATA_ALIGN(pong,128);#pragma DATA_ALIGN(outbuff,128);我一直不明白#pragma DATA_ALIGN有什么作用。我在书上看是这样介绍的:“#pragma DATA_ALIGN(symbol,constant); DATA_ALIGN指令排列symbol到constant定义的边界上”请问这样有什么作用?这个constant应该怎么选择呢?
最佳答案
- 二级知识专家网友:一只傻青衣
- 2021-04-26 15:30
设定变量的地址对齐方式。
比如:
int abc;
#pragma DATA_ALIGN(abc, 128)
那么编译时一定会把abc变量的地址安排在128字节对齐的位置上,也即abc地址的低7位一定为0,
又比如
char efd;
#prgma DATA_ALIGN(efd, 8)
那么编译时一定会把efd变量的地址安排在8字节对齐的位置上,也即efd地址的低3位一定为0。
pragma DATA_ALIGN是非常有用的,也经常使用的。
比如:
int abc;
#pragma DATA_ALIGN(abc, 128)
那么编译时一定会把abc变量的地址安排在128字节对齐的位置上,也即abc地址的低7位一定为0,
又比如
char efd;
#prgma DATA_ALIGN(efd, 8)
那么编译时一定会把efd变量的地址安排在8字节对齐的位置上,也即efd地址的低3位一定为0。
pragma DATA_ALIGN是非常有用的,也经常使用的。
全部回答
- 1楼网友:丢不掉的轻狂
- 2021-04-26 16:32
#pragma data_align( rxdata_stream, 128)就是让rxdata_stream地址的末尾7位是0(二进制地址),就是128字节对齐。对齐的目的,一般是位了cache读写外存。如果一个cache的line是128字节。这样,如果数据128字节对齐,那么取一个128字节的数据,只使用一个cache行就够了。具体的可以看ti 的cache文档。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯