前些日在VC下的一段代码需要移植到PPC上,利用codewarrior作为编译器,该部分程序主要涉及到一些位操作,而在这个过程中遇到一些小问题——VC下位域的位置与codewarrior下设定正好相反,如下:
union{
uint8 bytes;
struct{
uint8 bit1 : 1; -- lsb in vc++6.0 & msb in cw for MPC55xx
...
uint8 bit7 : 1; -- msb in vc++6.0 & lsb in cw for MPC55xx }bits;
}Byte_tag;
小查了下资料:
cw for X12下位域以byte为单位分配,高于byte以每16位进行安排,最高32bits,每16位位序从上至下为msb->lsb
对比cw for MPC55xx下,默认情况下16位、32位均为msb->lsb安排,另外位域可以通过“#pragma has8bytebitfields on”选项扩展到64bits;可以利用“#pragma reverse_bitfields on”将位序进行反转(ms X12下没有这个选项)。
ms有些规律,至少和大小端、CPU总线位数感觉还是有点关系的,不过,对于“位域”操作,位域在存储的位置与编译器是相关,如果应用对于位域在字节/字中的位置敏感的话,那么这样的程序在移植的过程中可能会遇到麻烦,这样反而利用宏定义来完成“位”的操作显得实惠得多。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
模拟电子技术 第四讲
国产高精度、高速率ADC芯片,正在崛起
面向先进处理解决方案的低压大电流设计
应用工程师
招硬件工程师、软件工程师、应用工程师
IBM PC-II型彩色显示器的电源电路图
IBM PC-I型彩色显示器的电源电路图
芯科科技Works With开发者大会深圳站成功举办 展示全球AIoT先进科技与协同创新
招硬件工程师、软件工程师、应用工程师
模拟电子技术 第五讲
模拟电子技术 第六讲
[求助]大力求助!!!关于如何选择图像转发的芯片
IDT7007高速双端口RAM及其应用
先进开发工具赋能国产车规级MCU在新能源汽车动力系统落地
iButton信息纽扣的介绍
HV9910的应用
淼森波×泰克科技联合实验室正式揭牌
赋能边缘人工智能:2025贸泽与你大咖说即将重磅启幕
IDC发布2026全球IT行业十大预测:塑造未来IT领导力的三大力量
IBM 2110-002型SVGA彩色显示器的电源电路图
HI-FI必读
招硬件工程师、软件工程师、应用工程师
意法半导体半桥栅极驱动器简化低压系统中的GaN电路设计
人形机器人,带火这些国产芯片
IBM 3196-001型彩色显示器的电源电路图
模拟电子技术 第八讲
模拟电子技术 第七讲
HT47R20A-1中AorD 轉換的使用介紹
IBM 5153-002型彩色显示器的电源电路图
半导体靶材,如何左右7nm以下制程?