于不同平台间存取任意位范围的数据的方法技术

技术编号:2878020 阅读:170 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种于不同平台间存取任意位范围的数据的方法,其主要通过一数据储存区中欲存取数据的位范围的起始与结束位的实际储存地址,而自动计算得到一第一与第二位移量,且对应该第一与第二位移量以将欲读出或写入该欲存取数据的位范围中的位数据,进行一相反方向的读取位移动作,完成一读取或写入程序;通过本发明专利技术的方法,可解决因不同系统平台间储存数据格式的差异,致使不易存取任意位范围的数据的问题。(*该技术在2022年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及一种存取位数据的方法,尤指一种可于不同的系统运作环境间,进行跨平台存取任意位范围的数据的方法。请参阅附图说明图1,其为一数字系统(图未示出)中所包括可储存数组数据字节数据储存区110的示意图;且,图1所示的数据储存区10系共包括有三组数据字节(bytes)B11、B12、B13。即,每一个单一数据字节的位数量为8个位,故该三组数据字节B11~B13共计有24个位(bit)(图1中标示为0~23)。当然,每个位也有其相应的储存地址(图1中标示为(0)~(23))。于实际的运用上而言,该24个位予以区分成五组位数据域位101~105,以分别储存五种具有不同用途的位数据。其中,第一位数据域位101包括有bit 0~bit 3等4个位、第二位数据域位102包括有bit 4~bit 9等6个位、第三位数据域位103包括有bit 10~bit 16等7个位、第四位数据域位104包括有bit 17~bit 18等2个位、第五位数据域位105则包括有bit 19~bit23等5个位。由于该数字系统都是以字节(byte)为储存的基本单位,因此,如欲自该三组数据字节B11~B13中对该五个位数据域位101~105分别进行读取或写入,且如果所欲存取的特定位数据域位的位数目并非刚好等于8个位时,势必要以一特定的读取与写入数据的方法,来进行位位移(shift)与进行一与门/或门逻辑运算,如此,方可自该三组数据字节B11~B13中取出特定位并组成所需要的数据。例如该第一位数据域位101=数据字节B11&0x0F;该第二位数据域位102=((数据字节B12&0x03)<<4)|((数据字节B11&0xF0)>>4);该第三位数据域位103=((数据字节B13&0x01)<<6)|((数据字节B12&0xFC)>>2);该第四位数据域位104=(数据字节B13&0x06)>>1;该第五位数据域位105=(数据字节B13&0xF8)>>3;其中,0x0F、0x02、0xF0、0x01、0xFC、0x06、0xF8都为以十六进制表示法所表示的8个位数据,且都作为一屏蔽(mask)数据使用;X&Y为将数据X与Y进行一与门逻辑运算;X|Y为将数据X与Y进行一或门逻辑运算;X>>Y为将数据X向右位移Y单位,且其中Y为一位移数据;X<<Y为将数据X向左位移Y单位,且其中Y为一位移数据。上述现有进行该特定的读取与写入数据的方法的缺点在于,其中所使用到的这些屏蔽数据与这些位移量,都为一固定值,其并无法自动或动态地对应各位数据域位实际所储存规格的变动而有所调整;例如,当该数字系统更改为以两个或四个字节为一基本储存单元以储存该三组数据字节B11~B13时,前述这些屏蔽数据与位移量,倘若未能同步地以人工方式逐一予以更改,其无法读取或写入正确的位数据。为改善上述现有做法的缺陷,现有另一种数据的读取或写入方式,改为直接以位操作的概念来进行数据的读取或写入。特别是针对该数据储存区10中的五个位数据域位101~105,在逻辑上,首先分别予以定义出所使用的位数量,且各位数据域位间有先后相邻的储存关系。尔后,于进行读取或写入各位数据域位时,仅需针对各位数据域位所事先宣告涵盖的位范围进行独立的读取或写入,即可不必再使用到前述现有技术所使用的这些屏蔽数据与这些位移量。举例而言,将该数据储存区10予以宣告为一结构式数组(structure array)的数据结构形式,且在逻辑上,各依序相邻储存的位数据字段于该数据储存区10中所需使用的位数量分别宣告如下该第一位数据域位101需要使用4个bits; 该第二位数据域位102需要使用6个bits;该第三位数据域位103需要使用7个bits;该第四位数据域位104需要使用2个bits;该第五位数据域位105需要使用5个bits。对于上述宣告为结构式数组数据结构形式的该数据储存区10而言,在实际储存做法中,该数字系统并未真正提供一块实际且连续的存储区块,以使这些位数据能相邻地储存于一起,而由该数字系统以其所能提供的基本储存格式来储存的。举例而言,请参阅图2(a),其为以两个字节(总计有(0)~(15)等共16个位)为一个基本储存单元来储存该数据储存区10的实际储存示意图。于图2(a)中(并请配合图1),因该第一~第三位数据域位101~103所涵盖的位范围共有17个位数据,其显然已超过一个基本储存单元所能提供的储存位数量(16个位),因此,该数字系统仅会将该第一与第二位数据域位101、102用第一个基本储存单元BX0来储存的,剩下的位数据域位103~105,则以第二基本储存单元BX1来进行储存。如此一来,该第一与第二位数据域位101、102所涵盖的位数据显然无法与该第三~第五位数据域位103~105所涵盖的位数据相邻地储存于一起,此也将使得后续于进行读取或写入时,无法取得到正确的位数据。现有进行位数据的读取或写入的方法,尚有一项严重的问题,即其并未考虑到不同的系统平台彼此间所使用的字节顺序(endian)并不相同,以致未予以实施不同的处理。例如,以80x86 CPU为核心的数字系统为例,其较低字节数据储存于较低地址上,因此,其字节顺序称为little endian。此等情形,请配合参阅图2(b)所示的以little endian位顺序储存字节的示意图即可明了。换言之,图2(b)中所示的三个基本储存单元(各有16个位)BL、BM、BH,其中最低字节数据BL储存于最低储存地址((0)~(7)),且最高字节数据BM系储存于最高储存地址((16)~(23))。另一方面,以ARM CPU或8051单芯片为核心的数字系统为例,其较低字节数据则储存于较高储存地址上,因此其字节顺序即称为big endian。此等情形,也请配合参阅图2(c)所示的以big endian位顺序储存字节的示意图即可明了。换言之,图2(c)中所示的三个基本储存单元(各有16个位)BL、BM、BH,其中最低字节数据BL系储存于最高储存地址((16)~(23)),且最高字节数据BM系储存于最低储存地址((0)~(7))。因此,现有进行数据位的读取或写入的方法,对于不同的系统平台并不具备不同的处理能力,将其适用至具有不同字节储存顺序的系统后,即无法正确地读取或写入所需的位数据。本专利技术的另一目的,在于提供一种可于具有不同字节储存顺序的不同平台间,存取任意位范围的数据的方法。本专利技术公开一种,包括下列步骤选择一数据储存区中欲存取数据的位范围;其中,该数据储存区包括数组数据字节,且该欲存取数据的位范围系至少包括一数据位;对应该数据位的储存地址,以自动计算得到一第一与第二位移量;以及对应一存取指令处于一读取模式或一写入模式,以分别对该欲存取数据的位范围进行一读取程序或一写入程序;其中,于进行该读取程序时,可分别对应该第一与第二位移量以将该欲存取数据的位范围中的数据字节分别进行一相反方向的读取位移动作,并予以合并形成一读取数据;而于进行该写入程序时,可分别对应该第一与第二位移量以将一写入数据中的数据字节进行一相反方向的写入位移动作本文档来自技高网...

【技术保护点】
一种于不同平台间存取任意位范围的数据的方法,其特征在于,包括下列步骤: 选择一数据储存区中欲存取数据的位范围;其中,该数据储存区包括数组数据字节,且该欲存取数据的位范围系至少包括一数据位; 对应该数据位的储存地址,以自动计算得到一第一与第二位移量;以及 对应一存取指令处于一读取模式或一写入模式,以分别对该欲存取数据的位范围进行一读取程序或一写入程序;其中,于进行该读取程序时,可分别对应该第一与第二位移量以将该欲存取数据的位范围中的数据字节分别进行一相反方向的读取位移动作,并予以合并形成一读取数据;而于进行该写入程序时,可分别对应该第一与第二位移量以将一写入数据中的数据字节进行一相反方向的写入位移动作,且将该相反方向的位移结果合并并写入该欲存取数据的位范围中。

【技术特征摘要】

【专利技术属性】
技术研发人员:李世凯
申请(专利权)人:威盛电子股份有限公司
类型:发明
国别省市:71[中国|台湾]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1