掌桥专利:专业的专利平台
掌桥专利
首页

变量地址的占用检测方法、装置、存储介质以及电子设备

文献发布时间:2024-04-18 19:58:30


变量地址的占用检测方法、装置、存储介质以及电子设备

技术领域

本申请涉及自动控制行业控制器编程和浏览器WEB页面相关领域,尤其涉及一种变量地址的占用检测方法、装置、存储介质以及电子设备。

背景技术

变量地址查重的占用检测方法主要分为遍历法和集合法。遍历法在占用检测时通过遍历全部数据集,依次对比变量地址是否存在冲突,该方法空间复杂度低但时间复杂度高。集合法将测试集数据先遍历一次建立地址集合缓存,在校验时只需一次查询即可得到校验结果,该方法时间复杂度很低但空间复杂度很高。

发明内容

本申请提供了一种变量地址的占用检测方法、装置、存储介质以及电子设备,以解决变量地址的常规占用检测方法响应时间长的技术问题。

第一方面,本申请提供了一种变量地址的占用检测方法,包括:获取变量数据集和目标变量,其中,上述变量数据集中包括至少一个变量,一个变量对应一个地址描述符,上述目标变量为用户将要输入至上述变量数据集的变量;根据上述变量数据集中的每一个地址描述符的字节地址位和类型长度,计算上述变量数据集的存储地址;计算上述目标变量的目标地址集合,并基于上述目标地址集合与上述存储地址,计算得到上述目标地址集合中的每一个地址的占用检测结果,其中,上述占用检测结果包括地址被占用和地址未被占用;在上述目标地址集合中的任意一个地址的占用检测结果为地址被占用的情况下,确定上述目标变量的目标地址描述符被占用。

第二方面,本申请提供了一种变量地址的占用检测装置,包括:获取模块,用于获取变量数据集和目标变量,其中,上述变量数据集中包括至少一个变量,一个变量对应一个地址描述符,上述目标变量为用户将要输入至上述变量数据集的变量;第一计算模块,用于根据上述变量数据集中的每一个地址描述符的字节地址位和类型长度,计算上述变量数据集的存储地址;第二计算模块,用于计算上述目标变量的目标地址集合,并基于上述目标地址集合与上述存储地址,计算得到上述目标地址集合中的每一个地址的占用检测结果,其中,上述占用检测结果包括地址被占用和地址未被占用;第一确定模块,用于在上述目标地址集合中的任意一个地址的占用检测结果为地址被占用的情况下,确定上述目标变量的目标地址描述符被占用。

作为一种可选的示例,上述第一计算模块包括:第一计算单元,用于依次计算上述变量数据集中的每一个地址描述符的存储单元;确定单元,用于将上述变量数据集中的最后一位变量的地址描述符的存储单元确定为上述存储地址。

作为一种可选的示例,上述第一计算单元包括:处理子单元,用于依次将上述变量数据集中的每一个地址描述符作为当前地址描述符,对上述当前地址描述符执行如下操作:在上述当前地址描述符为上述变量数据集中的第一位变量的地址描述符的情况下,根据初始存储单元、上述当前地址描述符的字节地址位和类型长度,计算上述当前地址描述符的当前存储单元;在上述当前地址描述符不为上述变量数据集中的第一位变量的地址描述符的情况下,根据上述当前地址描述符的上一个地址描述符的存储单元、上述当前地址描述符的字节地址位和类型长度,计算上述当前地址描述符的当前存储单元。

作为一种可选的示例,上述处理子单元,用于:根据上述当前地址描述符的当前字节地址位和当前类型长度,计算得到上述当前地址描述符的当前地址集合;遍历上述当前地址集合中的每一个地址,计算每一个地址的存储子单元;对每一个地址的存储子单元以及上述初始存储单元进行或运算,得到上述当前存储单元。

作为一种可选的示例,上述第二计算模块包括:第二计算单元,用于对上述目标地址描述符的目标类型长度和目标字节地址位做乘法运算,得到上述目标地址描述符的目标起始地址;第三计算单元,用于根据上述目标类型长度,对上述目标起始地址进行递增运算,得到上述目标地址集合。

作为一种可选的示例,上述第二计算模块包括:处理单元,用于将上述目标地址集合中的每一个地址作为当前地址,对上述当前地址执行如下操作:计算上述当前地址的当前存储子单元;对上述当前存储子单元和上述存储地址进行与运算,得到当前结果;在上述当前结果与上述存储地址相等的情况下,确定上述当前地址的当前占用检测结果为地址被占用;在上述当前结果与上述存储地址不相等的情况下,确定上述当前占用检测结果为地址未被占用。

作为一种可选的示例,上述装置还包括:第二确定模块,用于在计算得到上述目标地址集合中的每一个地址的占用检测结果之后,在上述目标地址集合中的每一个地址的占用检测结果都为地址未被占用的情况下,确定上述目标变量的目标变量地址未被占用。

第三方面,本申请提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被处理器运行时执行上述变量地址的占用检测方法。

第四方面,本申请还提供了一种电子设备,包括存储器和处理器,上述存储器中存储有计算机程序,上述处理器被设置为通过所述计算机程序执行上述的变量地址的占用检测方法。

在本申请实施例中,采用了获取变量数据集和目标变量,其中,上述变量数据集中包括至少一个变量,一个变量对应一个地址描述符,上述目标变量为用户将要输入至上述变量数据集的变量;根据上述变量数据集中的每一个地址描述符的字节地址位和类型长度,计算上述变量数据集的存储地址;计算上述目标变量的目标地址集合,并基于上述目标地址集合与上述存储地址,计算得到上述目标地址集合中的每一个地址的占用检测结果,其中,上述占用检测结果包括地址被占用和地址未被占用;在上述目标地址集合中的任意一个地址的占用检测结果为地址被占用的情况下,确定上述目标变量的目标地址描述符被占用的方法,由于在上述方法中,使用基于变量的地址描述符的字节地址位和类型长度的搜索算法,该算法通过遍历计算变量数据集中的每一个变量的地址描述符的字节地址位和类型长度,得到变量数据集的存储地址。在用户在界面上输入目标变量的目标地址描述符之后计算目标变量的目标地址集合,判断目标地址集合与目标地址集合中的每一个存储地址是否存在冲突。如果与任意一个存储地址存在冲突,则确定目标地址描述符已被占用。该算法充分利用每一个地址描述符的字节地址位和类型长度的空间有效性,使得该算法精度高、性能强,查询速度快、空间占用少,从而可以在较少的资源消耗的同时提升了变量地址的占用检测的查询效率,实现了加快响应速度,提高界面交互体验的目的,进而解决了变量地址的常规占用检测方法响应时间长的技术问题。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。

图1是根据本申请实施例的一种可选的变量地址的占用检测方法的流程图;

图2是根据本申请实施例的一种可选的变量地址的占用检测方法的位图缓存流程图;

图3是根据本申请实施例的一种可选的变量地址的占用检测方法的数据缓存加载图;

图4是根据本申请实施例的一种可选的变量地址的占用检测方法的位图缓存计算图;

图5是根据本申请实施例的一种可选的变量地址的占用检测装置的结构示意图;

图6是根据本申请实施例的一种可选的电子设备的示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

下文的公开提供了许多不同的实施例或例子用来实现本申请的不同结构。为了简化本申请的公开,下文中对特定例子的部件和设置进行描述。当然,它们仅仅为示例,并且目的不在于限制本申请。此外,本申请可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。

根据本申请实施例的第一方面,提供了一种变量地址的占用检测方法,可选地,如图1所示,上述方法包括:

S102,获取变量数据集和目标变量,其中,变量数据集中包括至少一个变量,一个变量对应一个地址描述符,目标变量为用户将要输入至变量数据集的变量;

S104,根据变量数据集中的每一个地址描述符的字节地址位和类型长度,计算变量数据集的存储地址;

S106,计算目标变量的目标地址集合,并基于目标地址集合与存储地址,计算得到目标地址集合中的每一个地址的占用检测结果,其中,占用检测结果包括地址被占用和地址未被占用;

S108,在目标地址集合中的任意一个地址的占用检测结果为地址被占用的情况下,确定目标变量的目标地址描述符被占用。

可选地,本实施例中,针对变量地址的特点,变量地址信息存储结构由三层结构组成,第一层为区域信息映射集合,第二层为对应区的全部字节地址信息数组,第三层为某一字节地址对应的比特地址数据映射集合,第二层每个数字最大可存储32个字节地址,第三层每个数字最大可存储32个比特地址。变量地址分为I区、Q区、M区三个区域,包含X、B、W、D、L五种类型,分别对应BOOL、BYTE、WORD、DOUBLE_WORD、LONG_WORD数据。其中,X类型的地址描述符的类型长度为1,B类型的地址描述符的类型长度为1,W类型的地址描述符的类型长度为2,D类型的地址描述符的类型长度为4,L类型的地址描述符的类型长度为8。

可选地,本实施例中,首先遍历计算变量数据集中的每一个变量的地址描述符的存储地址,最后得到变量数据集的存储地址。然后,等待用户在界面上输入目标变量的目标地址描述符,输入后计算目标变量的目标地址集合,通过判断目标地址集合与变量数据集的存储地址中的每一个地址是否存在冲突。如果任意一个地址存在冲突,在界面上以警告色高亮显示冲突项,警告用户目标变量的目标地址描述符已被占用。

作为一种可选的示例,根据变量数据集中的每一个地址描述符的字节地址位和类型长度,计算变量数据集的存储地址包括:

依次计算变量数据集中的每一个地址描述符的存储单元;

将变量数据集中的最后一位变量的地址描述符的存储单元确定为存储地址。

可选地,本实施例中,依次计算变量数据集中的每一个地址描述符的存储单元,最后将变量数据集中的最后一位变量的地址描述符的存储单元确定为存储地址。

作为一种可选的示例,依次计算变量数据集中的每一个地址描述符的存储单元包括:

依次将变量数据集中的每一个地址描述符作为当前地址描述符,对当前地址描述符执行如下操作:

在当前地址描述符为变量数据集中的第一位变量的地址描述符的情况下,根据初始存储单元、当前地址描述符的字节地址位和类型长度,计算当前地址描述符的当前存储单元;

在当前地址描述符不为变量数据集中的第一位变量的地址描述符的情况下,根据当前地址描述符的上一个地址描述符的存储单元、当前地址描述符的字节地址位和类型长度,计算当前地址描述符的当前存储单元。

可选地,本实施例中,以变量数据集中的第一位变量,第一变量为例,初始存储单元为0,第一变量的第一地址描述符为%IX4.6,字节地址位为4,类型长度为1,计算得到一地址描述符的第一存储单元为0x10。以变量数据集中的第二位变量,第二变量为例,第二变量的上一个变量为第一变量,第一变量的第一地址描述符的第一存储单元为0x10,第二变量的第二地址描述符为%IB3,字节地址位为3,类型长度为1,计算得到二地址描述符的第二存储单元为0x18。

作为一种可选的示例,根据初始存储单元、当前地址描述符的字节地址位和类型长度,计算当前地址描述符的当前存储单元包括:

根据当前地址描述符的当前字节地址位和当前类型长度,计算得到当前地址描述符的当前地址集合;

遍历当前地址集合中的每一个地址,计算每一个地址的存储子单元;

对每一个地址的存储子单元以及初始存储单元进行或运算,得到当前存储单元。

可选地,本实施例中,以变量数据集中的第一位变量,第一变量为例,初始存储单元为0,第一变量的第一地址描述符为%IX4.6,字节地址位为4,类型长度为1,首先计算第一地址描述符的第一地址集合为4*1+{0}={4},计算地址{4}的存储子单元0x10,由于第一地址描述符只有一位地址,则第一存储单元为0x10。若存在多个地址,则将每一个地址的存储子单元进行或运算,得到最后的存储单元。

作为一种可选的示例,计算目标变量的目标地址集合包括:

对目标地址描述符的目标类型长度和目标字节地址位做乘法运算,得到目标地址描述符的目标起始地址;

根据目标类型长度,对目标起始地址进行递增运算,得到目标地址集合。

可选地,本实施例中,以目标变量的目标地址描述符为%ID2为例,目标类型长度为4,目标字节地址位为2,得到目标起始地址未{0,1,2,3},根据目标类型长度,对目标起始地址进行递增运算,得到目标地址集合为2*4+{0,1,2,3}={8,9,10,11}。

作为一种可选的示例,基于目标地址集合与存储地址,计算得到目标地址集合中的每一个地址的占用检测结果包括:

将目标地址集合中的每一个地址作为当前地址,对当前地址执行如下操作:

计算当前地址的当前存储子单元;

对当前存储子单元和存储地址进行与运算,得到当前结果;

在当前结果与存储地址相等的情况下,确定当前地址的当前占用检测结果为地址被占用;

在当前结果与存储地址不相等的情况下,确定当前占用检测结果为地址未被占用。

可选地,本实施例中,以变量数据集的存储地址为0x00FFFC18为例,目标变量的目标地址描述符为%ID2的目标地址集合{8,9,10,11},计算地址{10}的存储子单元为0x00400,对存储子单元0x00400和存储地址0x00FFFC18进行与运算,得到结果为0x00FFFC18,则确定地址{10}的当前占用检测结果为地址被占用。计算地址{8}的的存储子单元为0x005F5E100,对存储子单元0x005F5E100和存储地址0x00FFFC18进行与运算,得到结果为0x00FFFD18,则确定地址{8}的当前占用检测结果为地址未被占用。

作为一种可选的示例,在计算得到目标地址集合中的每一个地址的占用检测结果之后,上述方法还包括:

在目标地址集合中的每一个地址的占用检测结果都为地址未被占用的情况下,确定目标变量的目标变量地址未被占用。

可选地,本实施例中,通过目标地址集合与存储地址,判断目标地址集合中的每一个地址是否存在冲突。如果每一个地址都不存在冲突,本次用户输入有效,保存用户输入的目标变量。

结合一种示例进行说明,本申请涉及一种变量地址的占用检测方法,提出一种基于位图的变量地址信息存储结构与缓存方法和使用该结构的搜索算法来解决变量地址的常规占用检测方法响应时间长的技术问题,通过充分利用位信息的空间有效性,既保障了查询速度,又节省了空间占用,从而加快响应速度,提高界面交互体验。

变量地址分为I区、Q区、M区三个区域,包含X、B、W、D、L五种类型,分别对应BOOL、BYTE、WORD、DOUBLE_WORD、LONG_WORD数据。变量地址描述符的分配规则如式%{I|Q|M}、{B|W|D|L}、{addr}、%{I|Q|M}、X{addr}.{addrbit},其中addr为字节位地址,addrbit为比特位地址。各类型地址在内存中的映射表1所示。

(表1)

可选地,提出一种地址数据信息存储结构,针对变量地址的特点,该存储结构由三层结构组成,第一层为区域信息映射集合,第二层为对应区的全部字节地址信息数组,第三层为某一字节地址对应的比特地址数据映射集合。第二层每个数字最大可存储32个字节地址,第三层每个数字最大可存储32个比特地址。

可以通过图2、图3以及图4的流程来实现变量地址信息缓存和检测。其过程详细描述如下:

首先,初始化位图集合BitMap={I:number[],Q:number[],M:number[]},BitMapX={}。

然后,依次加载已有数据,建立对应的位图缓存。判断地址是否冲突,若冲突,打印日志;若补充,信息存储到BitMap。其中,判断类型是否为X,如果是,存储信息到BitMapX。

然后,等待用户在界面上输入变量地址,输入后通过位图缓存集合判断是否存在冲突。如果存在冲突,在界面上以警告色高亮显示冲突项;如果不存在冲突,本次用户输入有效,保存输入值,流程结束。

其中,BitMap为位图缓存数组,数据类型为number[],每个位图缓存最大可存储32个字节地址。对于X类型变量地址,引入BitMapX缓存地址,数据类型{key:number},每位存储Xn.0~Xn+3.7的信息。

图3中的位图缓存流程图见图4,算法见公式(1.1)和公式(1.2):

BitMap={BitMap[Addr

BitMapX={BitMapX[Addr

公式(1.1)的计算方式为:遍历计算地址集合Addr

公式(1.2)的计算方式为:遍历计算地址集合Addr

重复校验算法见公式(1.3)

BitMap[Addr

公式(1.3)的计算方式为:遍历计算地址集合Addr

变量地址计算算法见公式(1.4)

Addr

公式(1.4)的计算方式为:对于地址集合Addr

可选地,以数据集(表2)为例展示算法计算过程。

(表2)

初始时BitMap

首先,读取变量IN1的地址描述符%IX4.6节地址位addr=4,比特地址位addrbit=6,类型长度len=1。根据公式(1.4)计算得到地址集合Addr0=4*1+{0}={4}。判断类型为X,根据公式(1.2)计算BitMapX,遍历地址集合Addr0,则BitMapX[4/4=1]=0|(1<<(4%4)*8+6)=0x40。然后,根据公式(1.1)itMap[4/32=0]=0|(1<<4%32)=0x10。

然后,读取变量IN2地址描述符%IB3,字节地址位addr=3,类型长度len=1,计算得到Addr1=3*1+{0}={3}。判断类型为B,直接计算BitMap[3/32=0]=0x10|(1<<3%32)=0x18,结果如表3所示。

(表3)

然后,依次读取变量地址并计算位图缓存。最后,得到的计算后的结果为:BitMap={‘I’:[0x00FFFC18]},BitMapX={1:0x40}。

假设此时用户输入目标变量的目标地址描述符为%ID2,循环依次计算%ID2的四个地址Addr=2*4+{0,1,2,3}={8、9、10、11}与BitMap校验的结果,可以得到0x00FFFC18&(1<<10)==(1<<10)的结果为真,则该地址被占用。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。

根据本申请实施例的另一方面,还提供了一种变量地址的占用检测装置,如图5所示,包括:

获取模块502,用于获取变量数据集和目标变量,其中,变量数据集中包括至少一个变量,一个变量对应一个地址描述符,目标变量为用户将要输入至变量数据集的变量;

第一计算模块504,用于根据变量数据集中的每一个地址描述符的字节地址位和类型长度,计算变量数据集的存储地址;

第二计算模块506,用于计算目标变量的目标地址集合,并基于目标地址集合与存储地址,计算得到目标地址集合中的每一个地址的占用检测结果,其中,占用检测结果包括地址被占用和地址未被占用;

第一确定模块508,用于在目标地址集合中的任意一个地址的占用检测结果为地址被占用的情况下,确定目标变量的目标地址描述符被占用。

可选地,本实施例中,针对变量地址的特点,变量地址信息存储结构由三层结构组成,第一层为区域信息映射集合,第二层为对应区的全部字节地址信息数组,第三层为某一字节地址对应的比特地址数据映射集合,第二层每个数字最大可存储32个字节地址,第三层每个数字最大可存储32个比特地址。变量地址分为I区、Q区、M区三个区域,包含X、B、W、D、L五种类型,分别对应BOOL、BYTE、WORD、DOUBLE_WORD、LONG_WORD数据。其中,X类型的地址描述符的类型长度为1,B类型的地址描述符的类型长度为1,W类型的地址描述符的类型长度为2,D类型的地址描述符的类型长度为4,L类型的地址描述符的类型长度为8。

可选地,本实施例中,首先遍历计算变量数据集中的每一个变量的地址描述符的存储地址,最后得到变量数据集的存储地址。然后,等待用户在界面上输入目标变量的目标地址描述符,输入后计算目标变量的目标地址集合,通过判断目标地址集合与变量数据集的存储地址中的每一个地址是否存在冲突。如果任意一个地址存在冲突,在界面上以警告色高亮显示冲突项,警告用户目标变量的目标地址描述符已被占用。

作为一种可选的示例,第一计算模块包括:

第一计算单元,用于依次计算变量数据集中的每一个地址描述符的存储单元;

确定单元,用于将变量数据集中的最后一位变量的地址描述符的存储单元确定为存储地址。

可选地,本实施例中,依次计算变量数据集中的每一个地址描述符的存储单元,最后将变量数据集中的最后一位变量的地址描述符的存储单元确定为存储地址。

作为一种可选的示例,第一计算单元包括:

处理子单元,用于依次将变量数据集中的每一个地址描述符作为当前地址描述符,对当前地址描述符执行如下操作:

在当前地址描述符为变量数据集中的第一位变量的地址描述符的情况下,根据初始存储单元、当前地址描述符的字节地址位和类型长度,计算当前地址描述符的当前存储单元;

在当前地址描述符不为变量数据集中的第一位变量的地址描述符的情况下,根据当前地址描述符的上一个地址描述符的存储单元、当前地址描述符的字节地址位和类型长度,计算当前地址描述符的当前存储单元。

可选地,本实施例中,以变量数据集中的第一位变量,第一变量为例,初始存储单元为0,第一变量的第一地址描述符为%IX4.6,字节地址位为4,类型长度为1,计算得到一地址描述符的第一存储单元为0x10。以变量数据集中的第二位变量,第二变量为例,第二变量的上一个变量为第一变量,第一变量的第一地址描述符的第一存储单元为0x10,第二变量的第二地址描述符为%IB3,字节地址位为3,类型长度为1,计算得到二地址描述符的第二存储单元为0x18。

作为一种可选的示例,处理子单元,用于:

根据当前地址描述符的当前字节地址位和当前类型长度,计算得到当前地址描述符的当前地址集合;

遍历当前地址集合中的每一个地址,计算每一个地址的存储子单元;

对每一个地址的存储子单元以及初始存储单元进行或运算,得到当前存储单元。

可选地,本实施例中,以变量数据集中的第一位变量,第一变量为例,初始存储单元为0,第一变量的第一地址描述符为%IX4.6,字节地址位为4,类型长度为1,首先计算第一地址描述符的第一地址集合为4*1+{0}={4},计算地址{4}的存储子单元0x10,由于第一地址描述符只有一位地址,则第一存储单元为0x10。若存在多个地址,则将每一个地址的存储子单元进行或运算,得到最后的存储单元。

作为一种可选的示例,第二计算模块包括:

第二计算单元,用于对目标地址描述符的目标类型长度和目标字节地址位做乘法运算,得到目标地址描述符的目标起始地址;

第三计算单元,用于根据目标类型长度,对目标起始地址进行递增运算,得到目标地址集合。

可选地,本实施例中,以目标变量的目标地址描述符为%ID2为例,目标类型长度为4,目标字节地址位为2,得到目标起始地址未{0,1,2,3},根据目标类型长度,对目标起始地址进行递增运算,得到目标地址集合为2*4+{0,1,2,3}={8,9,10,11}。

作为一种可选的示例,第二计算模块包括:

处理单元,用于将目标地址集合中的每一个地址作为当前地址,对当前地址执行如下操作:

计算当前地址的当前存储子单元;

对当前存储子单元和存储地址进行与运算,得到当前结果;

在当前结果与存储地址相等的情况下,确定当前地址的当前占用检测结果为地址被占用;

在当前结果与存储地址不相等的情况下,确定当前占用检测结果为地址未被占用。

可选地,本实施例中,以变量数据集的存储地址为0x00FFFC18为例,目标变量的目标地址描述符为%ID2的目标地址集合{8,9,10,11},计算地址{10}的存储子单元为0x00400,对存储子单元0x00400和存储地址0x00FFFC18进行与运算,得到结果为0x00FFFC18,则确定地址{10}的当前占用检测结果为地址被占用。计算地址{8}的的存储子单元为0x005F5E100,对存储子单元0x005F5E100和存储地址0x00FFFC18进行与运算,得到结果为0x00FFFD18,则确定地址{8}的当前占用检测结果为地址未被占用。

作为一种可选的示例,上述装置还包括:

第二确定模块,用于在计算得到目标地址集合中的每一个地址的占用检测结果之后,在目标地址集合中的每一个地址的占用检测结果都为地址未被占用的情况下,确定目标变量的目标变量地址未被占用。

可选地,本实施例中,通过目标地址集合与存储地址,判断目标地址集合中的每一个地址是否存在冲突。如果每一个地址都不存在冲突,本次用户输入有效,保存用户输入的目标变量。

本实施例的其他示例请参见上述示例,在此不在赘述。

图6是根据本申请实施例的一种可选的电子设备的示意图,如图6所示,包括处理器602、通信接口604、存储器606和通信总线606,其中,处理器602、通信接口604和存储器606通过通信总线606完成相互间的通信,其中,

存储器606,用于存储计算机程序;

处理器602,用于执行存储器606上所存放的计算机程序时,实现如下步骤:

获取变量数据集和目标变量,其中,变量数据集中包括至少一个变量,一个变量对应一个地址描述符,目标变量为用户将要输入至变量数据集的变量;

根据变量数据集中的每一个地址描述符的字节地址位和类型长度,计算变量数据集的存储地址;

计算目标变量的目标地址集合,并基于目标地址集合与存储地址,计算得到目标地址集合中的每一个地址的占用检测结果;

在目标地址集合中的任意一个地址的占用检测结果为地址被占用的情况下,确定目标变量的目标地址描述符被占用。

可选地,在本实施例中,上述的通信总线可以是PCI(Peripheral ComponentInterconnect,外设部件互连标准)总线、或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于上述电子设备与其他设备之间的通信。

存储器可以包括RAM,也可以包括非易失性存储器(non-volatile memory),例如,至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。

作为一种示例,上述存储器606中可以但不限于包括上述变量地址的占用检测装置中的获取模块502、第一计算模块504、第二计算模块506以及第一确定模块506。此外,还可以包括但不限于上述变量地址的占用检测装置中的其他模块单元,本示例中不再赘述。

上述处理器可以是通用处理器,可以包含但不限于:CPU(Central ProcessingUnit,中央处理器)、NP(Network Processor,网络处理器)等;还可以是DSP(DigitalSignal Processing,数字信号处理器)、ASIC(Application Specific IntegratedCircuit,专用集成电路)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。

本领域普通技术人员可以理解,图6所示的结构仅为示意,实施上述变量地址的占用检测方法的设备可以是终端设备,该终端设备可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图6并不对上述电子设备的结构造成限定。例如,电子设备还可包括比图6中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图6所示的不同的配置。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、ROM、RAM、磁盘或光盘等。

根据本申请的实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被处理器运行时执行上述变量地址的占用检测方法中的步骤。

可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。

在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

相关技术
  • 互联网协议IP地址获取方法、装置、存储介质及电子设备
  • 一种液位检测装置和包含其的设备以及液位检测方法、电子设备及计算机可读存储介质
  • 一种重复地址检测方法及装置、计算机可读存储介质
  • 手势关键点检测方法、装置、电子设备及存储介质
  • 加密恶意流量检测方法、装置、电子设备及存储介质
  • 应急车道占用行为检测方法、装置、电子设备及存储介质
  • 应急车道占用行为检测方法、装置、电子设备及存储介质
技术分类

06120116497251