|
发表于 2012-2-29 15:32:19
|
显示全部楼层
回复【6楼】uc_stm32f050 招开发工程师(深圳)
stm8必须是大端格式。
51,avr 如 iar8051,iaravr都是小端模式。
-----------------------------------------------------------------------
嗯,stm8虽然后面有个8,不过可以直接操作16位,硬件上就是大端的。
回复【7楼】5201314fff 风满花楼
各位做移植的时候有没有碰到过这样的呢?
虽然修改代码很容易就能解决
为什么不统一,或者编译器有可选项
-----------------------------------------------------------------------
要不就加一层,用宏来定义大小端的转换,比较烦的是结构体,每个元素都要转换。
一种通行的办法就是用字符串(8bit编码的),就不用考虑字节序问题了,当然更占资源。
要求C Runtime做成这样工作量实在是太大了,而且跟编译器也有一定关系,尤其是在8位机上实现。(比如int16, int32, int64的算数运算,每个都要做两份,float也要做两份,加减乘除都要做,还要包括逻辑运算),然后一份BE的编译器还要对应一份 BE 的LIB, 不然出错都不知道怎么出的。 |
|