CN103593299A - 一种节省存储空间的数据处理方法 - Google Patents

一种节省存储空间的数据处理方法 Download PDF

Info

Publication number
CN103593299A
CN103593299A CN201310562145.6A CN201310562145A CN103593299A CN 103593299 A CN103593299 A CN 103593299A CN 201310562145 A CN201310562145 A CN 201310562145A CN 103593299 A CN103593299 A CN 103593299A
Authority
CN
China
Prior art keywords
data
register
result
memory block
byte
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201310562145.6A
Other languages
English (en)
Other versions
CN103593299B (zh
Inventor
陆舟
于华章
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Feitian Technologies Co Ltd
Original Assignee
Feitian Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Feitian Technologies Co Ltd filed Critical Feitian Technologies Co Ltd
Priority to CN201310562145.6A priority Critical patent/CN103593299B/zh
Publication of CN103593299A publication Critical patent/CN103593299A/zh
Application granted granted Critical
Publication of CN103593299B publication Critical patent/CN103593299B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明公开一种节省存储空间的数据处理的方法,属于计算机技术领域。所述方法包括,A:CPU用第一寄存器中的数据更新第一存储区中的数据;B:判断第一寄存器中的数据是否为第一预设值,如果不是第一预设值,则从第四存储区中获取一个字节的数据,保存在第三存储区中,判断第二寄存器中的数据是否为第二预设值,如果是,则将第二寄存器中的数据清零,然后调用第一数据处理模块对第二存储区中的数据进行处理,用处理结果更新第二存储区,否则返回B;如果是第一预设值,则对第三存储区中的数据进行填充,用填充结果调用第一数据处理模块,得到的结果即为最终结果。采用本发明的技术方案,实现了内存的复用,减少了对空间的占用,提高了计算效率。

Description

一种节省存储空间的数据处理方法
技术领域
本发明属于计算机技术领域,尤其涉及一种节省存储空间的数据处理的方法。 
背景技术
数据处理是对数据的采集、存储、检索、加工、变换和传输,数据是对事实、概念或指令的一种表达形式,可由人工或自动化装置进行处理,数据处理是系统工程和自动控制的基本环节,数据处理贯穿与社会生产和社会生活的各个领域,数据处理技术的发展及其应用的广度和深度,极大的影响这人类社会发展的进程。 
在现有技术中,在进行散列算法计算时,往往要占用很大的内存空间,当内存空间较小时,很难进行散列计算。 
发明内容
本发明的目的是为了解决现有技术中存在的不足,提供了一种节省存储空间的数据处理的方法。 
本发明采用的技术方案是:一种节省存储空间的数据处理的方法,包括: 
步骤101:CPU调用初始化模块,初始化第一存储区、第二存储区、第三存储区、第五存储区、第一寄存器和第二寄存器;其中,所述第一寄存器用于存 储第四存储区中的数据的长度;第二寄存器用于存储所述第三存储区中的数据的长度; 
步骤102:所述CPU获取所述第一寄存器中的数据,更新所述第一存储区中的数据; 
步骤103:所述CPU判断所述第一寄存器中的数据是否为第一预设值,如果是,则执行步骤112,否则执行步骤104; 
步骤104:所述CPU根据所述第四存储区的首地址和当前偏移地址,从所述第四存储区中获取一个字节的数据,保存在所述第三存储区中,更新所述第二寄存器中的数据,更新所述当前偏移地址,并更新所述第一寄存器中的数据,判断所述第二寄存器中的数据是否等于第二预设值,如果是,则将所述第二寄存器中的数据清零,执行步骤105,否则返回步骤103; 
步骤105:所述CPU调用第一数据处理模块,将所述第二存储区中的数据存放在第五存储区中,获取循环计数器的当前计数值; 
步骤106:所述CPU对所述第二存储区中的数据进行处理,将处理结果保存在第三寄存器中;调用第二数据处理模块,对所述当前计数值与预设字节做与运算,对所述当前计数值加第三预设值的结果与所述预设字节做与运算,根据两个运算结果分别从所述第三存储区中获取对应的两个数据,对获取到的两个数据进行异或处理,将结果保存在第四寄存器中; 
步骤107:所述CPU对所述第三寄存器中的数据和所述第四寄存器中的数据进行处理,将结果保存在第五寄存器中; 
步骤108:所述CPU判断所述当前计数值是否大于或等于第四预设值,如果是,则调用第三数据处理模块,将处理结果保存在第六寄存器中,用所述第六寄存器中的数据更新所述第三存储区中与所述当前计数值对应的数据,执行步骤109,否则直接执行步骤109; 
步骤109:所述CPU对所述第六寄存器中的数据和所述第二存储区中的数据进行处理,将结果保存在第七寄存器中,对所述第二存储区中的数据进行处理,并用所述第五寄存器中的数据更新所述第二存储区,根据第一移位寄存器中的数据对所述第七寄存器中数据执行循环移位操作,将结果保存在第八寄存器中,根据第二移位寄存器中的数据对所述第八寄存器中的数据执行循环移位操作,将结果保存在第九寄存器中,然后对所述第七寄存器中的数据、所述第八寄存器中的数据、所述第九寄存器中的数据进行处理,将结果保存在第十寄存器中,用所述第十寄存器中的数据更新所述第二存储区; 
步骤110:所述CPU判断所述当前计数值是否等于第五预设值,如果是,则执行步骤111,否则更新所述当前计数值,返回执行步骤106; 
步骤111:所述CPU对所述第二存储区中的数据和所述第五存储区中的数据做异或处理,用处理结果更新所述第二存储区,退出所述第一数据处理模块,执行步骤103; 
步骤112:所述CPU调用填充模块,对所述第三存储区中的数据进行填充,调用所述第一数据处理模块对填充结果进行处理,得到处理结果。 
所述步骤101中,所述初始化第二寄存器,具体为:将所述第二寄存器中的数据初始化为所述第一寄存器中的数据左移3位,再与0x3F做与运算的结果。 
所述步骤102中,所述更新所述第一存储区中的数据,具体为:所述CPU将所述第一寄存器中的数据与所述第一存储区中的数据相加,得到的结果保存在所述第一存储区中。 
所述步骤104中,所述更新所述第一寄存器中的数据,具体为:所述CPU将所述第一寄存器中的数据减去预设步长的结果或者将所述第一寄存器中的数据加上预设步长的结果作为更新后的所述第一寄存器中的数据。 
所述更新所述第二寄存器中的数据,具体为:所述CPU将所述第二寄存器 中的数据减去预设步长的结果或者将所述第二寄存器中的数据加上预设步长的结果作为更新后的所述第二寄存器中的数据。 
所述步骤108中,所述调用第三数据处理模块,将处理结果保存在第六寄存器中,用所述第六寄存器中的数据更新所述第三存储区中与所述当前计数值对应的数据,具体为: 
步骤A:所述CPU调用所述第三数据处理模块,将所述当前计数值减去第六预设值再与所述预设字节做与运算得到第二计数值,将所述当前计数值减去第七预设值再与所述预设字节做与运算得到第三计数值,将所述当前计数值减去第八预设值再与所述预设字节做与运算得到第四计数值,将所述当前计数值减去第九预设值再与所述预设字节做与运算得到第五计数值,将所述当前计数值减去第十预设值再与所述预设字节做与运算得到第六计数值,从所述第三存储区中分别获取与所述第二计数值、所述第三计数值、所述第四计数值、所述第五计数值和所述第六计数值对应的第三数值、第四数值、第五数值、第六数值和第七数值; 
步骤B:所述CPU根据第三移位寄存器中的数据对所述第五数值执行循环移位操作,对得到的循环移位结果、所述第三数值、所述第四数值做异或运算,将结果保存在第十五寄存器中; 
步骤C:所述CPU根据第五移位寄存器中的数据对所述第十五寄存器中的数据执行循环移位操作,将该移位结果保存在第十七寄存器中; 
步骤D:所述CPU根据第六移位寄存器中的数据对所述第十七寄存器中的数据执行循环移位操作,将该移位结果保存在第十八寄存器中; 
步骤E:所述CPU对所述第十五寄存器、所述第十七寄存器和所述第十八寄存器做异或运算,将结果保存在第十六寄存器中; 
步骤F:所述CPU根据第四移位寄存器中的数据对所述第六数值执行循环移 位操作,得到的循环移位结果与所述第七数值、所述第十六寄存器中的数据做异或运算,将结果保存在第六寄存器中,将所述第三存储区中与所述当前计数值对应的数据替换为所述第六寄存器中的数据。 
所述步骤B中,所述根据第三移位寄存器中的数据对所述第五数值执行循环移位操作,具体为:将所述第五数值循环左移2个字节,再循环右移1位; 
所述步骤C中,所述根据第五移位寄存器中的数据对所述第十五寄存器中的数据执行循环移位操作,具体为:将所述第十五寄存器中的数据循环左移2个字节,再循环左移1位; 
所述步骤D中,所述根据第六移位寄存器中的数据对所述第十七寄存器中的数据执行循环移位操作,具体为:将所述第十七寄存器中的数据循环左移1个字节; 
所述步骤F中,所述根据第四移位寄存器中的数据对所述第六数值执行循环移位操作,具体为:将所述第六数值循环左移2个字节,再循环右移1位。 
所述步骤109中,所述根据第一移位寄存器中的数据对所述第七寄存器中数据执行循环移位操作,具体为:将所述第七寄存器中数据循环左移1个字节,再循环左移1位; 
所述步骤109中,所述根据第二移位寄存器中的数据对所述第八寄存器中的数据执行循环移位操作,具体为:将所述第八寄存器中的数据循环左移1个字节。 
所述左移1个字节,具体为:所述CPU将一个字长的数据中的各字节数据进行循环移位,即对第一字节、第二字节、第三字节和第四字节进行循环移位:所述CPU将所述第一字节的数据移至预设寄存器中,将所述第二字节的数据移至所述第一字节的位置,将所述第三字节的数据移至所述第二字节的位置,将所述第四字节的数据移至所述第三字节的位置,将所述预设寄存器中的数据移 至所述第四字节的位置。 
所述步骤B中,所述根据第三移位寄存器中的数据对所述第五数值执行循环移位操作,具体为:将所述第三移位寄存器的位数与字长做除法,得到商和余数,判断余数是否大于字长与2相除的结果,如果是,则将商加1的结果作为要移动的字节数,将字长与余数的差值作为要反向移动的位数,否则将商作为要移动的字节数,将余数作为要移动的位数; 
所述步骤C中,所述根据第五移位寄存器中的数据对所述第十五寄存器中的数据执行循环移位操作,具体为:将所述第五移位寄存器中的数据与字长做除法,得到商和余数,判断余数是否大于字长与2相除的结果,如果是,则将商加1的结果作为要移动的字节数,将字长与余数的差值作为要反向移动的位数,否则将商作为要移动的字节数,将余数作为要移动的位数; 
所述步骤D中,所述根据第六移位寄存器中的数据对所述第十七寄存器中的数据执行循环移位操作,具体为:将所述第十七寄存器中的数据循环左移1个字节; 
所述步骤F中,所述根据第四移位寄存器中的数据对所述第六数值执行循环移位操作,具体为:将所述第四移位寄存器中的位数与字长做除法,得到商和余数,判断余数是否大于字长与2相除的结果,如果是,则将商加1的结果作为要移动的字节数,将字长与余数的差值作为要反向移动的位数,否则将商作为要移动的字节数,将余数作为要移动的位数。 
所述步骤109中,所述根据第一移位寄存器中的数据对所述第七寄存器中数据执行循环移位操作,具体为:将所述第一移位寄存器中的数据与字长做除法,得到商和余数,判断余数是否大于字长与2相除的结果,如果是,则将商加1的结果作为要移动的字节数,将字长与余数的差值作为要反向移动的位数,否则将商作为要移动的字节数,将余数作为要移动的位数; 
所述步骤109中,所述根据第二移位寄存器中的数据对所述第八寄存器中 的数据执行循环移位操作,具体为:将所述所述第八寄存器中的数据循环左移1个字节。 
所述步骤106中,所述CPU对所述第二存储区中的数据进行处理,将处理结果保存在第三寄存器中,具体为: 
步骤A-01:所述CPU获取所述第二存储区中的第一数据和第五数据,将所述第一数据循环左移4位,然后再循环左移1个字节,得到的结果保存在第十一寄存器中; 
步骤A-02:所述CPU获取预设存储区中与所述当前计数值对应的预设数据,对所述预设数据、所述第五数据和所述第一数值做加法,将加法结果循环左移1个字节,再循环右移1位,得到的结果保存在第十二寄存器中; 
步骤A-03:所述CPU对所述第十一寄存器中的数据和所述第十二寄存器中的数据做异或运算,得到的结果保存在所述第三寄存器中。 
所述步骤106中,所述对所述当前计数值与预设字节做与运算,对所述当前计数值加第三预设值的结果与所述预设字节做与运算,根据两个运算结果分别从所述第三存储区中获取对应的两个数据,对获取到的两个数据进行异或处理,将结果保存在第四寄存器中,具体为: 
步骤A-11:所述CPU对所述当前计数值和所述预设字节做与运算,得到第一结果,从所述第三存储区中获取与所述第一结果对应的第一数值; 
步骤A-12:所述CPU将所述当前计数值与所述第三预设值做加法运算,得到第一计数值,对所述第一计数值和所述预设字节做与运算,得到第二结果,从所述第三存储区中获取与所述第二结果对应的第二数值; 
步骤A-13:所述CPU对所述第三存储区中的所述第一数值与所述第二数值做异或运算,将结果保存在所述第四寄存器中。 
所述步骤107,具体为: 
步骤107-1:所述CPU获取所述第二存储区中的第一数据、第二数据和第三数据,调用第六数据处理模块,将得到的结果保存在第十三寄存器中,退出所述第六数据处理模块; 
步骤107-2:所述CPU从所述第二存储区中获取第四数据,对所述第三寄存器中的数据、所述第四寄存器中的数据、所述第四数据和所述第十三寄存器中的数据做加法运算,得到的运算结果保存在第五寄存器中。 
所述步骤107-1中,所述调用第六数据处理模块,将得到的结果保存在第十三寄存器中,退出所述第六数据处理模块,具体为: 
步骤107-11:所述CPU判断所述当前计数值的范围,如果所述当前计数值大于等于第一限值且小于等于第二限值时,执行步骤107-12,如果所述当前计数值大于等于第三限值且小于等于第四限值时,执行步骤107-13; 
步骤107-12:所述CPU对所述第一数据、所述第二数据和所述第三数据做异或运算,将运算结果保存在第十三寄存器中,退出所述第六数据处理模块,执行步骤107-2; 
步骤107-13:CPU将第一数据与第二数据做与运算的结果,再与第一数据和第三数据做与运算的结果做或运算,得到的结果再与第二数据和第三数据做与运算的结果做或运算,将运算结果保存在所述第十三寄存器中,退出所述第六数据处理模块,执行步骤107-2。 
所述步骤109中,所述CPU对所述第六寄存器中的数据和所述第二存储区中的数据进行处理,将结果保存在第七寄存器中,具体为: 
步骤112-1:所述CPU根据所述第二存储区中的第五数据、第六数据和第七数据,调用第七数据处理模块,将该调用结果保存在第十四寄存器中,退出所 述第七数据处理模块; 
步骤112-2:所述CPU从所述第二存储区中获取第八数据,对第十二寄存器中的数据、第六寄存器中的数据、所述第八数据和所述第十四寄存器中的数据做加法运算,将结果保存在第七寄存器中。 
所述步骤112-1中,所述调用第七数据处理模块,将该调用结果保存在第十四寄存器中,退出所述第七数据处理模块,具体为: 
步骤112-11:所述CPU判断所述当前计数值的范围,如果当所述前计数值大于等于第一限值且小于等于第二限值,则执行步骤112-12,如果所述当前计数值大于等于第三限值且小于等于第四限值,则执行步骤112-13; 
步骤112-12:所述CPU对所述第五数据与所述第六数据做异或运算,再与所述第七数据做异或运算,将运算结果保存在第十四寄存器中,退出所述第七数据处理模块; 
步骤112-13:所述CPU将所述第五数据与所述第六数据做与运算的结果,和所述第五数据做非运算再与所述第六数据做与运算操作的结果做或运算,将运算结果保存在第十四寄存器中,退出所述第七数据处理模块。 
所述步骤109中,所述对所述第二存储区中的数据进行处理,并用所述第五寄存器中的数据更新所述第二存储区,具体为: 
步骤A3:所述CPU将所述第二存储区中的第四数据替换为第三数据;将所述第二存储区中的第二数据循环左移1位,再循环左移1个字节,将第三数据替换为将该循环移位结果;将所述第二存储区中的第二数据替换为第一数据;将所述第二存储区中的第一数据替换为第五寄存器中的数据;; 
步骤B3:所述CPU将所述第二存储区中的第八数据替换为第七数据;将所述第二存储区中的第六数据循环左移3位,再循环左移2个字节,将第七数据 替换为该循环移位结果;将所述第二存储区中的第六数据替换为第五数据;根据第七寄存器中的数据,调用第四数据处理模块,将得到的结果保存在第十寄存器中,将所述第二存储区中的第五数据替换为所述第十寄存器中的数据。 
所述步骤112中,所述CPU调用填充模块,对所述第三存储区中的数据进行填充,具体为:CPU在所述第三存储区中的数据后填充比特位1、填充512减去第二寄存器中的数据再减去1的长度的0、填充所述第一存储区中的数据。 
本发明取得的有益效果是:采用本发明的技术方法,提供了一种很大程度上节省内存空间的散列算法,实现了内存的复用,减少了对空间的占用,提高了计算效率。 
附图说明
为了更清楚的说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。 
图1是本发明实施例1提供的一种节省存储空间的数据处理的方法流程图; 
图2是本发明实施例1提供的CPU调用第一数据处理模块进行处理的方法流程图; 
图3是本发明实施例1提供的CPU执行循环左移1个字节的操作流程图; 
图4是本发明实施例1提供的CPU调用第二数据处理模块进行处理的流程图; 
图5是本发明实施例1提供的CPU调用第三数据处理模块进行处理的流程图; 
图6是本发明实施例1提供的CPU调用第四数据处理模块进行处理的流程图; 
图7是本发明实施例1提供的CPU调用第五数据处理模块进行处理的流程图。 
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。 
实施例1 
本发明实施例1提供的一种节省存储空间的数据处理的方法,本实施例中,第一存储区用于存储运算数据的长度,第二存储区用于存储运算过程中的操作结果,第三存储区用于存储运算数据,本实施例优选的,1个字长为32位; 
如图1所示,CPU执行的一种节省存储空间的数据处理的方法,包括以下步骤: 
步骤A:CPU调用初始化模块,初始化第一存储区、第二存储区、第三存储区、第五存储区、第一寄存器和第二寄存器; 
本实施例中,优选的,将第二存储区存储的第一数据初始化为0x7380166f、第二数据初始化为0x4914b2b9、第三数据初始化为0x172442d7、第四数据初始 化为0xda8a0600、第五数据初始化为0xa96f30bc、第六数据初始化为0x163138aa、第七数据初始化为0xe38dee4d、第八数据初始化为0xb0fb0e4e,将第一存储区、第三存储区、第五存储区及第一寄存器中的数据初始化为0,将第二寄存器初始化为第一寄存器中的数据左移3位,再与0x3f做与运算的结果; 
步骤B:CPU获取第一寄存器中的数据,更新所述第一存储区中的数据; 
本实施例中,第一寄存器用于存放第四存储区中的数据的长度; 
所述更新所述第一存储区中的数据,具体为:CPU将第一寄存器中的数据与所述第一存储区中的数据相加,得到的结果保存在所述第一存储区中; 
例如,第四存储区中的数据为:00010203 04050607 08090A0B 0C0D0E0F10111213 14151617 18191A1B 1C1D1E1F 20212223 24252627 28292A2B 2C2D2E2F30313233 34353637 38393A3B 3C3D3E3F 40414243 44454647 48494A4B 4C4D4E4F50515253 54555657 58595A5B 5C5D5E5F 60616263 64656667 68696A6B 6C6D6E6F70717273 74757677 78797A7B 7C7D7E7F 80818283 84858687 88898A8B 8C8D8E8F90919293 94959697 98999A9B 9C9D9E9F A0A1A2A3 A4A5A6A7 A8A9AAAB ACADAEAFB0B1B2B3 B4B5B6B7 B8B9BABB BCBDBEBF C0C1C2C3 C4C5C6C7 C8C9CACB CCCDCECFD0D1D2D3 D4D5D6D7 D8D9DADB DCDDDEDF E0E1E2E3 E4E5E6E7 E8E9EAEBECEDEEEF  F0F1F2F3  F4F5F6F7  F8F9FAFB FCFDFEFF;第一寄存器中的数据为256; 
步骤C:CPU判断所述第一寄存器中的数据是否为第一预设值,如果是,则执行步骤G,否则执行步骤D; 
本实施例中,优选的,所述第一预设值为0; 
所述更新所述第一寄存器中的数据,具体为:将所述第一寄存器中的数据减去预设步长或者将所述第一寄存器中的数据加上预设步长; 
步骤D:CPU从第四存储区中获取一个字节的数据,保存在所述第三存储区中,并更新所述第一寄存器中的数据; 
具体的,CPU根据第四存储区的首地址和当前偏移地址,从第四存储区中获取一个字节的数据,然后再更新当前偏移地址,具体为:将当前偏移地址更新为当前偏移地址加上一个字节的长度; 
步骤E:CPU根据所述第三存储区中的数据变化,更新第二寄存器中的数据,判断第二寄存器中的数据是否等于第二预设值,如果是,则CPU将第二寄存器中的数据清零,执行步骤F,否则返回执行步骤C; 
本实施例中,优选的,所述第二预设值为64; 
本实施例中,所述第二寄存器用于存放第三存储区中的数据的长度; 
所述更新所述第二寄存器中的数据,具体为:将所述第二寄存器中的数据减去预设步长或者将所述第二寄存器中的数据加上预设步长; 
所述步骤C、步骤D和步骤E还可以为: 
步骤C’:CPU用第二预设值减去第二寄存器中的数据,得到的结果保存在临时寄存器中; 
步骤D’:CPU判断临时寄存器中的数据是否大于第一寄存器中的数据,如果是,则将第四存储区中的数据按字节依次写入第三存储区中,执行步骤H,否则从第四存储区中获取与第一寄存器中的数据相同长度的字节数,并按字节依次写入第三存储区中,执行步骤F; 
步骤F:CPU调用第一数据处理模块对第三存储区中的数据进行运算,用运算得到的结果更新第二存储区,退出第一数据处理模块,执行步骤C; 
步骤G:CPU调用填充模块,对所述第三存储区中的数据进行填充,调用所述第一数据处理模块对填充结果进行处理,用处理结果更新所述第二存储区; 
本实施例中,所述CPU按照预设填充格式对第三存储区中的数据进行填充,具体为:CPU在第三存储区中的数据后填充比特位1、填充512减去第二寄存器中的数据再减去1的长度的0、填充所述第一存储区中的数据;本实施例中,调用第一数据处理模块对填充结果进行计算,得到的运算结果即为最终结果。 
参见图2,所述CPU调用第一数据处理模块对第三存储区中的数据进行运算,用运算得到的结果更新第二存储区,退出第一数据处理模块,具体为, 
步骤101:CPU将第二存储区中的数据存放在第五存储区中,获取循环计数器的值,作为当前计数值; 
本实施例中,当循环计数器的值为0时,第五存储区中的值为:0x7380166f0x4914b2b9 0x172442d7 0xda8a0600 0xa96f30bc 0x163138aa 0xe38dee4d 0xb0fb0e4e; 
本实施例中,循环计数区的初始值为0,本实施例以当前计数值为0来说明; 
步骤102:CPU获取第二存储区中的第一数据和第五数据,将第一数据循环左移4位,然后再循环左移1个字节,得到的结果保存在第十一寄存器中;获取预设存储区中与当前计数值对应的预设数据,对预设数据、第五数据和第十一寄存器中的数据做加法,将得到的加法结果循环右移1位,再循环左移1个字节,得到的结果保存在第十二寄存器中; 
本实施例中,所述将第一数据循环左移4位,然后再循环左移1个字节,还可以为:将要循环移位的位数与字长做除法,得到商和余数,判断余数是否大于字长与2相除的结果,如果是,则将商加1的结果作为要移动的字节数,将字长与余数的差值作为要反向移动的位数,否则将商作为要移动的字节数,将余数作为要移动的位数;本步骤中,要循环移位的位数为12,将12除以字长8,得到商为1,余数为4,4不大于字长8与2相除的结果4,所述商1为要移动的字节数,余数4为要移动的位数,即循环左移1个字节,再循环左移4位; 
例如,获取到的预设数据为79cc4519,第五数据为A96F30BC,第一数据为7380166F,对第一数据循环左移4位,得到380166F7,再循环左移1个字节, 得到的结果0166F738保存在第十一寄存器中,对预设数据、第五数据和第十一寄存器中的数据做加法,得到的加法结果为24A26D0D,将加法结果循环右移1位,得到92513686,再循环左移1个字节,得到的结果51368692保存在第十二寄存器中; 
本实施例中,预设存储区中存放的预设数据,具体为:预先将与当前计数值对应的数据再循环左移当前计数值位的预设数据保存在预设存储区中。 
步骤103:CPU对第十一寄存器中的数据和第十二寄存器中的数据做异或运算,得到的结果保存在第三寄存器中; 
将第十一寄存器中的数据0x0166F738和第十二寄存器中的数据0x51368692做异或运算,得到的结果0x505071AA保存在第三寄存器中; 
步骤104:CPU调用第二数据处理模块,将调用结果保存在第四寄存器中,退出第二数据处理模块,对第二存储区中的第一数据、第二数据和第三数据,调用第六数据处理模块,将得到的结果保存在第十三寄存器中,退出第六数据处理模块; 
本实施例中,经调用第二数据处理模块,得到的结果为0x10101010,保存在第四寄存器中; 
本实施例中,所述CPU调用第六数据处理模块,将调用结果保存在第十三寄存器中,具体为: 
步骤1:CPU判断当前计数值的范围,如果当前计数值大于等于0且小于等于15时,执行步骤2,如果当前计数值大于等于16且小于等于63时,执行步骤3; 
步骤2:CPU对第一数据、第二数据和第三数据做异或运算,将运算结果保存在第十三寄存器中,退出第六数据处理模块; 
对第一数据7380166F、第二数据4914B2B9、第三数据172442D7做异或运算,将得到的结果2DB0E601保存在第十三寄存器中; 
步骤3:CPU将第一数据与第二数据做与运算的结果,再与第一数据和第三数据做与运算的结果做或运算,得到的结果再与第二数据和第三数据做与运算的结果做或运算,将运算结果保存在第十三寄存器中,退出第六数据处理模块。 
步骤105:CPU从第二存储区中获取第四数据,对第三寄存器中的数据、第四寄存器中的数据、第四数据和第十三寄存器中的数据做加法运算,得到的运算结果保存在第五寄存器中; 
对第三寄存器中的数据505071AA、第四数据DA8A0600、第四寄存器中的数据10101010、第十三寄存器中的数据2DB0E601相加,得到的运算结果689B6DBB保存在第五寄存器中。 
步骤106:CPU调用第三数据处理模块,将该调用结果保存在第六寄存器中,退出第三数据处理模块,根据第二存储区中的第五数据、第六数据和第七数据,调用第七数据处理模块,将该调用结果保存在第十四寄存器中,退出第七数据处理模块; 
本实施例中,经调用第三数据处理模块,得到的调用结果为00010203,保存在第六寄存器中; 
本实施例中,所述CPU调用第七数据处理模块,将该调用结果保存在第十四寄存器中,具体为: 
步骤1:判断当前计数值的范围,如果当前计数值大于等于0且小于等于15,则执行步骤2,如果当前计数值大于等于16且小于等于63,则执行步骤3; 
步骤2:对第五数据与第六数据做异或运算,再与第七数据做异或运算,将运算结果保存在第十四寄存器中,退出第七数据处理模块; 
本实施例中,对第五数据A96F30BC、第六数据163138AA和第七数据E38DEE4D,进行异或运算,得到的运算结果5CD3E65B保存在第十四寄存器中; 
步骤3:CPU将第五数据与第六数据做与运算的结果,和第五数据做非运算再与第六数据做与运算操作的结果做或运算,将运算结果保存在第十四寄存器中,退出第七数据处理模块。 
步骤107:CPU从第二存储区中获取第八数据,对第十二寄存器中的数据、第六寄存器中的数据、第八数据和第十四寄存器中的数据做加法运算,将结果保存在第七寄存器中; 
本实施例中,对第十二寄存器中的数据51368692、第六寄存器中的数据00010203、第八数据B0FB0E4E、第十四寄存器中的数据5CD3E65B相加,得到结果5F067D3E保存在第七寄存器中。 
步骤108:CPU将第二存储区中的第四数据替换为第三数据;将第二存储区中的第二数据循环左移1位,再循环左移1个字节,将第三数据替换为将该循环移位结果;将第二存储区中的第二数据替换为第一数据;将第二存储区中的第一数据替换为第五寄存器中的数据; 
本实施例中,所述将第二存储区中的第二数据循环左移1位,再循环左移1个字节,还可以为:将要循环移位的位数与字长做除法,得到商和余数,判断余数是否大于字长与2相除的结果,如果是,则将商加1的结果作为要移动的字节数,将字长与余数的差值作为要反向移动的位数,否则将商作为要移动的字节数,将余数作为要移动的位数;本步骤中,要循环移位的位数为9,将9除以字长8,得到商为1,余数为1,1不大于字长8与2相除的结果4,所述商1为要移动的字节数,余数1为要移动的位数,即循环左移1个字节,再循环左移1位; 
本实施例中,将第四数据置为172442D7;将第二数据4914B2B9循环左移1位,得到92296572,再循环左移1个字节,得到循环移位结果29657292,将第 二存储区中的第三数据置为29657292;将第二数据置为7380166F;将第一数据置为第五寄存器中的数据689B6DBB。 
步骤109:CPU将第二存储区中的第八数据替换为第七数据;将第二存储区中的第六数据循环左移3位,再循环左移2个字节,将第七数据替换为该循环移位结果;将第二存储区中的第六数据替换为第五数据;根据第七寄存器中的数据,调用第四数据处理模块,将得到的结果保存在第十寄存器中,退出第四数据处理模块,将第二存储区中的第五数据替换为第十寄存器中的数据; 
本实施例中,所述将第二存储区中的第六数据循环左移3位,再循环左移2个字节,还可以为:将要循环移位的位数与字长做除法,得到商和余数,判断余数是否大于字长与2相除的结果,如果是,则将商加1的结果作为要移动的字节数,将字长与余数的差值作为要反向移动的位数,否则将商作为要移动的字节数,将余数作为要移动的位数;本步骤中,要循环移位的位数为19,将19除以字长8,得到商为2,余数为3,3不大于字长8与2相除的结果4,所述商2为要移动的字节数,余数3为要移动的位数,即循环左移2个字节,再循环左移3位; 
本实施例中,将第八数据置为E38DEE4D;将第六数据163138AA循环左移3位,得到B189C550,再循环左移2个字节,得到循环移位结果C550B189,将第七数据置为C550B189;将第六数据置为A96F30BC;根据第七寄存器中的数据5F067D3E,调用第四数据处理模块,得到A980BF8C保存在第十寄存器中,将第五数据置为第十寄存器中的数据A980BF8C; 
本实施例中,步骤109与步骤108无先后顺序,可以调换执行; 
本实施例中,得到的第二存储区中的数据为:0x689B6DBB 0x7380166F 0x29657292 0x172442D7 0xA980BF8C 0xA96F30BC 0xC550B189 0xE38DEE4D; 
步骤110:CPU判断当前计数值是否等于第五预设值,如果是,则执行步骤111,否则更新当前计数值,执行步骤102; 
步骤111:CPU对第二存储区中的数据和第四存储区中的数据做异或运算,将第二存储区中的数据替换为该异或运算结果,退出第一数据处理模块。 
参见图3,以CPU执行循环左移1个字节的操作为例来说明,CPU将32位的数据按照字节进行循环移位,即对第一字节、第二字节、第三字节和第四字节进行循环移位,具体为:(例如,对第一数据循环左移1个字节) 
步骤S01:CPU将第一字节的数据移至预设寄存器中; 
例如,待循环移位的数据为0x7380166F,则第一字节为0x73、第二字节为0x80、第三字节为0x16、第四字节为0x6F;将预设寄存器中的数据置为0x73; 
步骤S02:CPU将第二字节的数据移至第一字节的位置; 
例如,将第一字节的位置对应的数据置为0x80; 
步骤S03:CPU将第三字节的数据移至第二字节的位置; 
例如,将第二字节的位置对应的数据置为0x16; 
步骤S04:CPU将第四字节的数据移至第三字节的位置; 
例如,将第二字节的位置对应的数据置为0x6F; 
步骤S05:CPU将预设寄存器中的数据移至第四字节的位置; 
例如,将第四字节的位置对应的数据置为0x73;得到的第一、第二、第三、第四字节上的数据为0x80166F73,实现了循环移动一个字节,即循环移动8位。 
参见图4:步骤104中,所述CPU调用第二数据处理模块,将调用结果保存 在第四寄存器中,退出第二数据处理模块,具体为: 
步骤S11:CPU对当前计数值和预设字节做与运算,得到第一结果,从第三存储区中获取与所述第一结果对应的第一数值; 
本实施例中,预设字节为0x0f; 
步骤S12:CPU将当前计数值与第三预设值做加法运算,得到第一计数值,对第一计数值和预设字节做与运算,得到第二结果,从第三存储区中获取与所述第二结果对应的第二数值; 
优选的,第三预设值为4; 
本实施例中,当前计数值为0,从第三存储区中找到对应的第0个数,即第一数值为00010203,第一计数值为4与0x0f做与运算,得到的第二结果仍为4,从第三存储区中找到第4个数,即第二数值为10111213; 
步骤S13:CPU对第三存储区中的第一数值与第二数值做异或运算,将结果保存在第四寄存器中,退出第二数据处理模块; 
对第三存储区中的第一数值00010203和第二数值10111213做异或运算,得到结果10101010,保存在第四寄存器中。 
参见图5:步骤106中,CPU调用第三数据处理模块,将该调用结果保存在第六寄存器中,退出第三数据处理模块,具体为: 
步骤S21:CPU判断当前计数值是否大于或等于第四预设值,如果是,则执行步骤S22,否则退出第三数据处理模块; 
优选的,第四预设值为16; 
具体的,更新当前计数值即为将当前计数值加1; 
本实施例中,还可以为:先判断当前计数值是否大于或等于第四预设值,如果是,则调用第三数据处理模块,否则执行步骤106中根据第二存储区中的第五数据、第六数据和第七数据,调用第七数据处理模块,将该调用结果保存在第十四寄存器中; 
步骤S22:CPU将当前计数值减去第六预设值再与预设字节做与运算得到第二计数值,将当前计数值减去第七预设值再与预设字节做与运算得到第三计数值,将当前计数值减去第八预设值再与预设字节做与运算得到第四计数值,将当前计数值减去第九预设值再与预设字节做与运算得到第五计数值,将当前计数值减去第十预设值再与预设字节做与运算得到第六计数值,从第三存储区中分别获取与第二计数值、第三计数值、第四计数值、第五计数值和第六计数值对应的第三数值、第四数值、第五数值、第六数值和第七数值; 
优选的,本实施例中,第六预设值为16、第七预设值为9、第八预设值为3、第九预设值为13,第十预设值为6; 
步骤S23:CPU根据第三移位寄存器中的数据将第五数值循环左移2个字节,再循环右移1位,对得到的循环移位结果、第三数值、第四数值做异或运算,将结果保存在第十五寄存器中,根据第十五寄存器中的数据调用第五数据处理模块,将该调用结果保存在第十六寄存器中; 
本实施例中,所述将第五数值循环左移2个字节,再循环右移1位,还可以为:将第三移位寄存器的位数与字长做除法,得到商和余数,判断余数是否大于字长与2相除的结果,如果是,则将商加1的结果作为要移动的字节数,将字长与余数的差值作为要反向移动的位数,否则将商作为要移动的字节数,将余数作为要移动的位数;本步骤中,要循环移位的位数为15,将15除以字长8,得到商为1,余数为7,7大于字长8与2相除的结果4,所述将商加1即2为要移动的字节数,字长8减7即1为要移动的位数,即循环左移2个字节, 再循环右移1位; 
步骤S24:CPU根据第四移位寄存器中的数据将第六数值循环左移1个字节,再循环右移1位,得到的循环移位结果与第七数值、第十六寄存器中的数据做异或运算,将结果保存在第六寄存器中,将第三存储区中与当前计数值对应的数据替换为第六寄存器中的数据,退出第三数据处理模块; 
所述第四移位寄存器中的数据为8; 
本实施例中,所述将第六数值循环左移1个字节,再循环右移1位,还可以为:将第四移位寄存器中的位数与字长做除法,得到商和余数,判断余数是否大于字长与2相除的结果,如果是,则将商加1的结果作为要移动的字节数,将字长与余数的差值作为要反向移动的位数,否则将商作为要移动的字节数,将余数作为要移动的位数;本步骤中,要循环移位的位数为7,将7除以字长8,得到商为0,余数为7,7大于字长8与2相除的结果4,所述将商加1即1为要移动的字节数,字长8减7即1为要移动的位数,即循环左移1个字节,再循环右移1位; 
本实施例中,因为第三存储区中当前的数据只在计算时用过一次,后面再需要,因此执行完步骤S24得到的运算结果替换掉第三存储区中对应的数据,无需再为该调用结果分配新的空间,实现了内存的复用。 
参见图6,步骤109中,所述CPU根据第七寄存器中的数据,调用第四数据处理模块,将得到的结果保存在第十寄存器中,退出第四数据处理模块,具体为: 
步骤S31:CPU根据第一移位寄存器中的数据将第七寄存器中的数据循环左移1位,再循环左移1个字节,得到结果保存在第八寄存器中; 
所述第一移位寄存器中的数据为9; 
本实施例中,所述将第七寄存器中的数据循环左移1位,再循环左移1个字节,还可以为:将第一移位寄存器中的数据与字长做除法,得到商和余数,判断余数是否大于字长与2相除的结果,如果是,则将商加1的结果作为要移动的字节数,将字长与余数的差值作为要反向移动的位数,否则将商作为要移动的字节数,将余数作为要移动的位数;本步骤中,第一移位寄存器中的数据为9,将9除以字长8,得到商为1,余数为1,1不大于字长8与2相除的结果4,所述将商1为要移动的字节数,余数1为要移动的位数,即循环左移1个字节,再循环左移1位; 
步骤S32:CPU根据第二移位寄存器中的数据将第八寄存器中的数据循环左移1个字节,将移位结果保存在第九寄存器中; 
所述第二移位寄存器中的数据为8; 
步骤S33:CPU对第七寄存器中的数据、第八寄存器中的数据、第九寄存器中的数据做异或运算,将得到的结果保存在第十寄存器中,退出第四数据处理模块。 
本实施例在调用第四数据处理模块时,采用的是将第七寄存器中的数据循环移位后,保存,再直接对保存的数据直接循环移位即可,无需重新用第七寄存器中的数据多次循环移位,加快了数据处理的速率。 
参见图7,步骤S23中,所述CPU根据第十五寄存器中的数据调用第五数据处理模块,将该调用结果保存在第十六寄存器中,退出第五数据处理模块,具体为: 
步骤S41:CPU根据第五移位寄存器中的数据将第十五寄存器中的数据循环 左移2个字节,再循环右移1位,将该移位结果保存在第十七寄存器中; 
所述第四移位寄存器中的数据为17; 
本实施例中,所述将第十五寄存器中的数据循环左移2个字节,再循环右移1位,还可以为:将第五移位寄存器中的数据与字长做除法,得到商和余数,判断余数是否大于字长与2相除的结果,如果是,则将商加1的结果作为要移动的字节数,将字长与余数的差值作为要反向移动的位数,否则将商作为要移动的字节数,将余数作为要移动的位数;本步骤中,第五移位寄存器中的数据为15,将15除以字长8,得到商为1,余数为7,7大于字长8与2相除的结果4,所述将商加1即2为要移动的字节数,字长8减7即1为要反向移动的位数,即循环左移1个字节,再循环右移1位; 
步骤S42:CPU根据第六移位寄存器中的数据将第十七寄存器中的数据循环左移1个字节,将该移位结果保存在第十八寄存器中; 
所述第六移位寄存器中的数据为8; 
步骤S43:CPU对第十五寄存器、第十七寄存器和第十八寄存器做异或运算,将结果保存在第十六寄存器中,退出第五数据处理模块。 
本实施例在调用第五数据处理模块时,采用的是将第十五寄存器中的数据循环移位后,保存,再直接对保存的数据直接循环移位即可,无需重新用第十五寄存器中的数据多次循环移位,加快了数据处理的速率。 
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。 

Claims (19)

1.一种节省存储空间的数据处理的方法,其特征在于,包括:
步骤101:CPU调用初始化模块,初始化第一存储区、第二存储区、第三存储区、第五存储区、第一寄存器和第二寄存器;其中,所述第一寄存器用于存储第四存储区中的数据的长度;第二寄存器用于存储所述第三存储区中的数据的长度;
步骤102:所述CPU获取所述第一寄存器中的数据,更新所述第一存储区中的数据;
步骤103:所述CPU判断所述第一寄存器中的数据是否为第一预设值,如果是,则执行步骤112,否则执行步骤104;
步骤104:所述CPU根据所述第四存储区的首地址和当前偏移地址,从所述第四存储区中获取一个字节的数据,保存在所述第三存储区中,并更新所述第二寄存器中的数据,更新所述当前偏移地址,更新所述第一寄存器中的数据,判断所述第二寄存器中的数据是否等于第二预设值,如果是,则将所述第二寄存器中的数据清零,执行步骤105,否则返回步骤103;
步骤105:所述CPU调用第一数据处理模块,将所述第二存储区中的数据存放在第五存储区中,获取循环计数器的当前计数值;
步骤106:所述CPU对所述第二存储区中的数据进行处理,将处理结果保存在第三寄存器中;调用第二数据处理模块,对所述当前计数值与预设字节做与运算,对所述当前计数值加第三预设值的结果与所述预设字节做与运算,根据两个运算结果分别从所述第三存储区中获取对应的两个数据,对获取到的两个数据进行异或处理,将结果保存在第四寄存器中;
步骤107:所述CPU对所述第三寄存器中的数据和所述第四寄存器中的数据进行处理,将结果保存在第五寄存器中;
步骤108:所述CPU判断所述当前计数值是否大于或等于第四预设值,如果是,则调用第三数据处理模块,将处理结果保存在第六寄存器中,用所述第六寄存器中的数据更新所述第三存储区中与所述当前计数值对应的数据,执行步骤109,否则直接执行步骤109;
步骤109:所述CPU对所述第六寄存器中的数据和所述第二存储区中的数据进行处理,将结果保存在第七寄存器中,对所述第二存储区中的数据进行处理,并用所述第五寄存器中的数据更新所述第二存储区,根据第一移位寄存器中的数据对所述第七寄存器中数据执行循环移位操作,将结果保存在第八寄存器中,根据第二移位寄存器中的数据对所述第八寄存器中的数据执行循环移位操作,将结果保存在第九寄存器中,然后对所述第七寄存器中的数据、所述第八寄存器中的数据、所述第九寄存器中的数据进行处理,将结果保存在第十寄存器中,用所述第十寄存器中的数据更新所述第二存储区;
步骤110:所述CPU判断所述当前计数值是否等于第五预设值,如果是,则执行步骤111,否则更新所述当前计数值,返回执行步骤106;
步骤111:所述CPU对所述第二存储区中的数据和所述第五存储区中的数据做异或处理,用处理结果更新所述第二存储区,退出所述第一数据处理模块,执行步骤103;
步骤112:所述CPU调用填充模块,对所述第三存储区中的数据进行填充,调用所述第一数据处理模块对填充结果进行处理,得到处理结果。
2.根据权利要求1所述的方法,其特征在于,所述步骤101中,所述初始化第二寄存器,具体为:将所述第二寄存器中的数据初始化为所述第一寄存器中的数据左移3位,再与0x3F做与运算的结果。
3.根据权利要求1所述的方法,其特征在于,所述步骤102中,所述更新所述第一存储区中的数据,具体为:所述CPU将所述第一寄存器中的数据与所述第一存储区中的数据相加,得到的结果保存在所述第一存储区中。
4.根据权利要求1所述的方法,其特征在于,所述步骤104中,所述更新所述第一寄存器中的数据,具体为:所述CPU将所述第一寄存器中的数据减去预设步长的结果或者将所述第一寄存器中的数据加上预设步长的结果作为更新后的所述第一寄存器中的数据。
5.根据权利要求1所述的方法,其特征在于,所述步骤104中,所述更新所述第二寄存器中的数据,具体为:所述CPU将所述第二寄存器中的数据减去预设步长的结果或者将所述第二寄存器中的数据加上预设步长的结果作为更新后的所述第二寄存器中的数据。
6.根据权利要求1所述的方法,其特征在于,所述步骤108中,所述调用第三数据处理模块,将处理结果保存在第六寄存器中,用所述第六寄存器中的数据更新所述第三存储区中与所述当前计数值对应的数据,具体为:
步骤A:所述CPU调用所述第三数据处理模块,将所述当前计数值减去第六预设值再与所述预设字节做与运算得到第二计数值,将所述当前计数值减去第七预设值再与所述预设字节做与运算得到第三计数值,将所述当前计数值减去第八预设值再与所述预设字节做与运算得到第四计数值,将所述当前计数值减去第九预设值再与所述预设字节做与运算得到第五计数值,将所述当前计数值减去第十预设值再与所述预设字节做与运算得到第六计数值,从所述第三存储区中分别获取与所述第二计数值、所述第三计数值、所述第四计数值、所述第五计数值和所述第六计数值对应的第三数值、第四数值、第五数值、第六数值和第七数值;
步骤B:所述CPU根据第三移位寄存器中的数据对所述第五数值执行循环移位操作,对得到的循环移位结果、所述第三数值、所述第四数值做异或运算,将结果保存在第十五寄存器中;
步骤C:所述CPU根据第五移位寄存器中的数据对所述第十五寄存器中的数据执行循环移位操作,将该移位结果保存在第十七寄存器中;
步骤D:所述CPU根据第六移位寄存器中的数据对所述第十七寄存器中的数据执行循环移位操作,将该移位结果保存在第十八寄存器中;
步骤E:所述CPU对所述第十五寄存器、所述第十七寄存器和所述第十八寄存器做异或运算,将结果保存在第十六寄存器中;
步骤F:所述CPU根据第四移位寄存器中的数据对所述第六数值执行循环移位操作,得到的循环移位结果与所述第七数值、所述第十六寄存器中的数据做异或运算,将结果保存在第六寄存器中,将所述第三存储区中与所述当前计数值对应的数据替换为所述第六寄存器中的数据。
7.根据权利要求6所述的方法,其特征在于,
所述步骤B中,所述根据第三移位寄存器中的数据对所述第五数值执行循环移位操作,具体为:将所述第五数值循环左移2个字节,再循环右移1位;
所述步骤C中,所述根据第五移位寄存器中的数据对所述第十五寄存器中的数据执行循环移位操作,具体为:将所述第十五寄存器中的数据循环左移2个字节,再循环左移1位;
所述步骤D中,所述根据第六移位寄存器中的数据对所述第十七寄存器中的数据执行循环移位操作,具体为:将所述第十七寄存器中的数据循环左移1个字节;
所述步骤F中,所述根据第四移位寄存器中的数据对所述第六数值执行循环移位操作,具体为:将所述第六数值循环左移2个字节,再循环右移1位。
8.根据权利要求1所述的方法,其特征在于,
所述步骤109中,所述根据第一移位寄存器中的数据对所述第七寄存器中数据执行循环移位操作,具体为:将所述第七寄存器中数据循环左移1个字节,再循环左移1位;
所述步骤109中,所述根据第二移位寄存器中的数据对所述第八寄存器中的数据执行循环移位操作,具体为:将所述第八寄存器中的数据循环左移1个字节。
9.根据权利要求7或8所述的方法,其特征在于,所述左移1个字节,具体为:所述CPU将一个字长的数据中的各字节数据进行循环移位,即对第一字节、第二字节、第三字节和第四字节进行循环移位:所述CPU将所述第一字节的数据移至预设寄存器中,将所述第二字节的数据移至所述第一字节的位置,将所述第三字节的数据移至所述第二字节的位置,将所述第四字节的数据移至所述第三字节的位置,将所述预设寄存器中的数据移至所述第四字节的位置。
10.根据权利要求6所述的方法,其特征在于,
所述步骤B中,所述根据第三移位寄存器中的数据对所述第五数值执行循环移位操作,具体为:将所述第三移位寄存器的位数与字长做除法,得到商和余数,判断余数是否大于字长与2相除的结果,如果是,则将商加1的结果作为要移动的字节数,将字长与余数的差值作为要反向移动的位数,否则将商作为要移动的字节数,将余数作为要移动的位数;
所述步骤C中,所述根据第五移位寄存器中的数据对所述第十五寄存器中的数据执行循环移位操作,具体为:将所述第五移位寄存器中的数据与字长做除法,得到商和余数,判断余数是否大于字长与2相除的结果,如果是,则将商加1的结果作为要移动的字节数,将字长与余数的差值作为要反向移动的位数,否则将商作为要移动的字节数,将余数作为要移动的位数;
所述步骤D中,所述根据第六移位寄存器中的数据对所述第十七寄存器中的数据执行循环移位操作,具体为:将所述第十七寄存器中的数据循环左移1个字节;
所述步骤F中,所述根据第四移位寄存器中的数据对所述第六数值执行循环移位操作,具体为:将所述第四移位寄存器中的位数与字长做除法,得到商和余数,判断余数是否大于字长与2相除的结果,如果是,则将商加1的结果作为要移动的字节数,将字长与余数的差值作为要反向移动的位数,否则将商作为要移动的字节数,将余数作为要移动的位数。
11.根据权利要求1所述的方法,其特征在于,
所述步骤109中,所述根据第一移位寄存器中的数据对所述第七寄存器中数据执行循环移位操作,具体为:将所述第一移位寄存器中的数据与字长做除法,得到商和余数,判断余数是否大于字长与2相除的结果,如果是,则将商加1的结果作为要移动的字节数,将字长与余数的差值作为要反向移动的位数,否则将商作为要移动的字节数,将余数作为要移动的位数;
所述步骤109中,所述根据第二移位寄存器中的数据对所述第八寄存器中的数据执行循环移位操作,具体为:将所述所述第八寄存器中的数据循环左移1个字节。
12.根据权利要求1所述的方法,其特征在于,所述步骤106中,所述CPU对所述第二存储区中的数据进行处理,将处理结果保存在第三寄存器中,具体为:
步骤A-01:所述CPU获取所述第二存储区中的第一数据和第五数据,将所述第一数据循环左移4位,然后再循环左移1个字节,得到的结果保存在第十一寄存器中;
步骤A-02:所述CPU获取预设存储区中与所述当前计数值对应的预设数据,对所述预设数据、所述第五数据和所述第一数值做加法,将加法结果循环左移1个字节,再循环右移1位,得到的结果保存在第十二寄存器中;
步骤A-03:所述CPU对所述第十一寄存器中的数据和所述第十二寄存器中的数据做异或运算,得到的结果保存在所述第三寄存器中。
13.根据权利要求1所述的方法,其特征在于,所述步骤106中,所述对所述当前计数值与预设字节做与运算,对所述当前计数值加第三预设值的结果与所述预设字节做与运算,根据两个运算结果分别从所述第三存储区中获取对应的两个数据,对获取到的两个数据进行异或处理,将结果保存在第四寄存器中,具体为:
步骤A-11:所述CPU对所述当前计数值和所述预设字节做与运算,得到第一结果,从所述第三存储区中获取与所述第一结果对应的第一数值;
步骤A-12:所述CPU将所述当前计数值与所述第三预设值做加法运算,得到第一计数值,对所述第一计数值和所述预设字节做与运算,得到第二结果,从所述第三存储区中获取与所述第二结果对应的第二数值;
步骤A-13:所述CPU对所述第三存储区中的所述第一数值与所述第二数值做异或运算,将结果保存在所述第四寄存器中。
14.根据权利要求1所述的方法,其特征在于,所述步骤107,具体为:
步骤107-1:所述CPU获取所述第二存储区中的第一数据、第二数据和第三数据,调用第六数据处理模块,将得到的结果保存在第十三寄存器中,退出所述第六数据处理模块;
步骤107-2:所述CPU从所述第二存储区中获取第四数据,对所述第三寄存器中的数据、所述第四寄存器中的数据、所述第四数据和所述第十三寄存器中的数据做加法运算,得到的运算结果保存在第五寄存器中。
15.根据权利要求14所述的方法,其特征在于,所述步骤107-1中,所述调用第六数据处理模块,将得到的结果保存在第十三寄存器中,退出所述第六数据处理模块,具体为:
步骤107-11:所述CPU判断所述当前计数值的范围,如果所述当前计数值大于等于第一限值且小于等于第二限值时,执行步骤107-12,如果所述当前计数值大于等于第三限值且小于等于第四限值时,执行步骤107-13;
步骤107-12:所述CPU对所述第一数据、所述第二数据和所述第三数据做异或运算,将运算结果保存在第十三寄存器中,退出所述第六数据处理模块,执行步骤107-2;
步骤107-13:CPU将第一数据与第二数据做与运算的结果,再与第一数据和第三数据做与运算的结果做或运算,得到的结果再与第二数据和第三数据做与运算的结果做或运算,将运算结果保存在所述第十三寄存器中,退出所述第六数据处理模块,执行步骤107-2。
16.根据权利要求12所述的方法,其特征在于,所述步骤109中,所述CPU对所述第六寄存器中的数据和所述第二存储区中的数据进行处理,将结果保存在第七寄存器中,具体为:
步骤112-1:所述CPU根据所述第二存储区中的第五数据、第六数据和第七数据,调用第七数据处理模块,将该调用结果保存在第十四寄存器中,退出所述第七数据处理模块;
步骤112-2:所述CPU从所述第二存储区中获取第八数据,对第十二寄存器中的数据、第六寄存器中的数据、所述第八数据和所述第十四寄存器中的数据做加法运算,将结果保存在第七寄存器中。
17.根据权利要求16所述的方法,其特征在于,所述步骤112-1中,所述调用第七数据处理模块,将该调用结果保存在第十四寄存器中,退出所述第七数据处理模块,具体为:
步骤112-11:所述CPU判断所述当前计数值的范围,如果当所述前计数值大于等于第一限值且小于等于第二限值,则执行步骤112-12,如果所述当前计数值大于等于第三限值且小于等于第四限值,则执行步骤112-13;
步骤112-12:所述CPU对所述第五数据与所述第六数据做异或运算,再与所述第七数据做异或运算,将运算结果保存在第十四寄存器中,退出所述第七数据处理模块;
步骤112-13:所述CPU将所述第五数据与所述第六数据做与运算的结果,和所述第五数据做非运算再与所述第六数据做与运算操作的结果做或运算,将运算结果保存在第十四寄存器中,退出所述第七数据处理模块。
18.根据权利要求1所述的方法,其特征在于,所述步骤109中,所述对所述第二存储区中的数据进行处理,并用所述第五寄存器中的数据更新所述第二存储区,具体为:
步骤A3:所述CPU将所述第二存储区中的第四数据替换为第三数据;将所述第二存储区中的第二数据循环左移1位,再循环左移1个字节,将第三数据替换为将该循环移位结果;将所述第二存储区中的第二数据替换为第一数据;将所述第二存储区中的第一数据替换为第五寄存器中的数据;;
步骤B3:所述CPU将所述第二存储区中的第八数据替换为第七数据;将所述第二存储区中的第六数据循环左移3位,再循环左移2个字节,将第七数据替换为该循环移位结果;将所述第二存储区中的第六数据替换为第五数据;根据第七寄存器中的数据,调用第四数据处理模块,将得到的结果保存在第十寄存器中,将所述第二存储区中的第五数据替换为所述第十寄存器中的数据。
19.根据权利要求1所述的方法,其特征在于,所述步骤112中,所述CPU调用填充模块,对所述第三存储区中的数据进行填充,具体为:CPU在所述第三存储区中的数据后填充比特位1、填充512减去第二寄存器中的数据再减去1的长度的0、填充所述第一存储区中的数据。
CN201310562145.6A 2013-11-12 2013-11-12 一种节省存储空间的数据处理方法 Expired - Fee Related CN103593299B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310562145.6A CN103593299B (zh) 2013-11-12 2013-11-12 一种节省存储空间的数据处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310562145.6A CN103593299B (zh) 2013-11-12 2013-11-12 一种节省存储空间的数据处理方法

Publications (2)

Publication Number Publication Date
CN103593299A true CN103593299A (zh) 2014-02-19
CN103593299B CN103593299B (zh) 2016-02-24

Family

ID=50083450

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310562145.6A Expired - Fee Related CN103593299B (zh) 2013-11-12 2013-11-12 一种节省存储空间的数据处理方法

Country Status (1)

Country Link
CN (1) CN103593299B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107480054A (zh) * 2017-07-25 2017-12-15 努比亚技术有限公司 一种调用链数据处理方法、设备及计算机可读存储介质
CN108322222A (zh) * 2018-01-16 2018-07-24 四川斐讯信息技术有限公司 一种生成及使用分布式唯一id的方法
CN111162907A (zh) * 2019-12-28 2020-05-15 飞天诚信科技股份有限公司 一种协商密钥的生成方法及智能卡设备
CN111159784A (zh) * 2019-12-17 2020-05-15 飞天诚信科技股份有限公司 一种在芯片中防差分功率分析攻击的实现方法及装置
CN112631547A (zh) * 2020-12-31 2021-04-09 陕西烽火电子股份有限公司 一种使用可编程逻辑器件实现频率合成器控制参数计算的高效方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040255124A1 (en) * 2003-04-03 2004-12-16 Stephan Courcambeck Protection of a program waiting to be executed in a memory used by a microprocessor
US20120257742A1 (en) * 2011-04-06 2012-10-11 Certicom Corp. Efficient Implementation of Hash Algorithm on a Processor
CN103207770A (zh) * 2013-04-16 2013-07-17 飞天诚信科技股份有限公司 一种在嵌入式系统中实现大数预计算的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040255124A1 (en) * 2003-04-03 2004-12-16 Stephan Courcambeck Protection of a program waiting to be executed in a memory used by a microprocessor
US20120257742A1 (en) * 2011-04-06 2012-10-11 Certicom Corp. Efficient Implementation of Hash Algorithm on a Processor
CN103207770A (zh) * 2013-04-16 2013-07-17 飞天诚信科技股份有限公司 一种在嵌入式系统中实现大数预计算的方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107480054A (zh) * 2017-07-25 2017-12-15 努比亚技术有限公司 一种调用链数据处理方法、设备及计算机可读存储介质
CN108322222A (zh) * 2018-01-16 2018-07-24 四川斐讯信息技术有限公司 一种生成及使用分布式唯一id的方法
CN111159784A (zh) * 2019-12-17 2020-05-15 飞天诚信科技股份有限公司 一种在芯片中防差分功率分析攻击的实现方法及装置
CN111159784B (zh) * 2019-12-17 2022-02-01 飞天诚信科技股份有限公司 一种在芯片中防差分功率分析攻击的实现方法及装置
CN111162907A (zh) * 2019-12-28 2020-05-15 飞天诚信科技股份有限公司 一种协商密钥的生成方法及智能卡设备
CN111162907B (zh) * 2019-12-28 2023-05-23 飞天诚信科技股份有限公司 一种协商密钥的生成方法及智能卡设备
CN112631547A (zh) * 2020-12-31 2021-04-09 陕西烽火电子股份有限公司 一种使用可编程逻辑器件实现频率合成器控制参数计算的高效方法
CN112631547B (zh) * 2020-12-31 2024-01-16 陕西烽火电子股份有限公司 一种使用可编程逻辑器件实现频率合成器控制参数计算的高效方法

Also Published As

Publication number Publication date
CN103593299B (zh) 2016-02-24

Similar Documents

Publication Publication Date Title
CN103593299A (zh) 一种节省存储空间的数据处理方法
CN110825375B (zh) 一种量子程序的转化方法、装置、存储介质和电子装置
CN105447106A (zh) 一种数学运算系统
CN109063295A (zh) 基于cae模型的节点信息优化处理方法和装置
CN110069312A (zh) 一种ui组件配置和生成ui组件库的方法及装置
CN108023942A (zh) 基于云平台的cad建模数据传输方法、服务器和客户端
CN112506584B (zh) 资源文件加载方法、装置、设备、存储介质以及产品
CN109343793A (zh) 数据迁移方法及装置
CN107341761A (zh) 一种深度神经网络的计算执行方法和系统
CN104461621A (zh) 一种更新属性信息的方法及装置
CN109447443A (zh) 指标计算方法及装置
CN103778067A (zh) Java卡的对象处理方法、装置和Java卡
CN111784817A (zh) 阴影的展示方法和装置、存储介质、电子装置
CN105468541A (zh) 一种面向透明计算智能终端的缓存管理方法
CN109558159A (zh) 游戏中用户界面的更新方法和装置
CN103544729A (zh) 一种动画数据处理方法及系统
CN107092514A (zh) 一种页面内容展示方法及装置
CN117076563A (zh) 一种应用于区块链的剪枝方法和装置
CN108874491A (zh) 信息加载的方法及装置
CN112905221A (zh) 一种版本回退方法、装置、电子设备及存储介质
CN111898276A (zh) 架空线路的模型处理方法、装置、计算机设备和介质
CN109492086A (zh) 一种答案输出方法、装置、电子设备及存储介质
CN104731968A (zh) 一种单机的大规模数据集的聚类挖掘方法
CN109614571A (zh) 非线性规划问题的处理方法及装置
CN105242978B (zh) 多线程条件下cpu高速缓存行失效的处理方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160224