2621|0

420

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

raw os 的基本数据类型 [复制链接]

基本数据类型是每一个跨平台的软件设计所必须要考虑到的,基本数据类型的目的主要是为了可以移植性。比如,如何写出windows上和linux下共同能编译运行的代码呢?除了使用标准的c语言外,基本数据类型是必须要考虑到的不可缺的因素。


所以跨平台的软件需要考虑跨编译器的移植,还有需要考虑到64位编译器的兼容性。


raw os的基本类型数据定义在raw_type.h。具体数据类型如下:


1  RAW_S8             有符号的单字节类型。
2  RAW_BOOLEAN         boolean数据
3  RAW_U8              无符号的单字节类型
4  RAW_U16             无符号的双字节类型
5  RAW_S16             有符号的双字节类型
6  RAW_U32             无符号的4字节类型
7  RAW_S32             有符号的4字节类型
8  RAW_S64             有符号的8字节类型
9  RAW_U64             无符号的8字节类型
10 PORT_STACK          栈元素的基本数据类型
11 RAW_PROCESSOR_INT   处理器的有符号的最大宽度
12 RAW_PROCESSOR_UINT  处理器的无符号的最大宽度


以上的基本类型数据需要在不同的编译器里重新定义,来达到移植的目的。


需要说明的是RAW_PROCESSOR_INT和RAW_PROCESSOR_UINT,RAW_PROCESSOR_INT 在32位的处理器上是有符号的4字节类型,RAW_PROCESSOR_UINT在32位的处理器上是无符号的4字节类型。在64位的处理器上,RAW_PROCESSOR_INT和RAW_PROCESSOR_UINT分别是8字节的有符号数和无符号数类型。


为了全面兼容64位的处理器,raw os 还有一个内部定义的数据类型,主要定义在raw_internal_type.h中。具体涉及的数据类型如下:

RAW_INTERNAL_NO_WAIT
RAW_INTERNAL_WAIT_FOREVER
RAW_TICK_TYPE
MSG_SIZE_TYPE


这些定义类型在32位处理器中是不需要去修改的,只有到了64位处理器才有必要去修改。
举例说明如下:
#define         RAW_INTERNAL_WAIT_FOREVER 0xffffffffu/*32 bit value, if RAW_TICK_TYPE is 64 bit, you need change it to 64 bit*/
上面定义的是在32位平台下的值。如果是64位平台下的话,这个值会定义为:
#define         RAW_INTERNAL_WAIT_FOREVER 0xffffffffffffffffu
                                       
又如以下是32位平台下定义的值:
typedef  RAW_U32 RAW_TICK_TYPE;  /*32 bit or 64bit unsigned value*/
64位平台下定义的值是:
typedef  RAW_U64 RAW_TICK_TYPE;  /*32 bit or 64bit unsigned value*/


又如以下类型定义:
typedef  RAW_U8  TASK_0_EVENT_TYPE; /*8 bit ,16bit or 32 bit unsigned value*/
typedef  RAW_U32 MSG_SIZE_TYPE; /*32 bit or 64 bit unsigned value*/


以上定义主要是为了程序数据量的可拓展性,经过加了一层define, 可以使得用户自定义的数据类型得到充分扩展,非常的灵活。


综上所述,设计跨平台的软件,基本数据类型的设计好坏,是对整个软件架构举足轻重的,不但要考虑到跨平台的移植,也需要考虑到64位平台的兼容。


[ 本帖最后由 jorya_txj 于 2013-9-21 08:40 编辑 ]
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表