Mrm*_*rmj 1 c arrays byte pointers cortex-m
场景是,我想读取来自给定指针的4字节数据,该指针是char类型.
例如:考虑以下情况 -
int a=0;
char* c; // This will have some address 
我想做的是从c(即地址)开始读取4个字节并将它们分配variable a为整数.
我的解决方案 
a = *(int*)c;  // Assembly is LDR    r1, [r6,#0x00]
我的问题:
 
以上解决方案在某些架构上运行良好但在某些架构上失败.具体来说,在我的情况下,它在Arm CortexM0上失败了.
如果任何人有任何便携式,高效率(最少装配)替换我的解决方案,请分享,这将是一个很大的帮助,我提前感谢你;)
请询问是否需要更多信息.
问题可能是因为对齐.某些CPU架构无法在未对齐的地址上读取或写入非字节值.
解决方案是改为使用未对齐的字节访问,这可以通过以下方式轻松完成memcpy:
memcpy(&a, c, sizeof a);