CN117608590B - 数据组包解包方法、装置和计算机设备 - Google Patents
数据组包解包方法、装置和计算机设备 Download PDFInfo
- Publication number
- CN117608590B CN117608590B CN202410095815.6A CN202410095815A CN117608590B CN 117608590 B CN117608590 B CN 117608590B CN 202410095815 A CN202410095815 A CN 202410095815A CN 117608590 B CN117608590 B CN 117608590B
- Authority
- CN
- China
- Prior art keywords
- data
- target
- code
- unpacking
- initial data
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 57
- 238000004088 simulation Methods 0.000 claims abstract description 43
- 238000012545 processing Methods 0.000 claims abstract description 34
- 238000012856 packing Methods 0.000 claims abstract description 9
- 238000006243 chemical reaction Methods 0.000 claims description 29
- 238000004590 computer program Methods 0.000 claims description 17
- 230000008569 process Effects 0.000 claims description 13
- 230000009191 jumping Effects 0.000 claims description 3
- 230000002194 synthesizing effect Effects 0.000 claims description 3
- 230000006870 function Effects 0.000 description 27
- 238000010586 diagram Methods 0.000 description 7
- 230000002829 reductive effect Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 101100091490 Caenorhabditis elegans hrp-1 gene Proteins 0.000 description 1
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 101150061360 RBP1 gene Proteins 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请涉及一种数据组包解包方法、装置和计算机设备。包括:当获取初始数据时,确定初始数据对应的目标模型,并根据目标模型的模型规模确定组包解包方式;当组包解包方式对应机器码模式时,确定目标模型的仿真机架构,并通过预设的配置信息和仿真机架构,得到目标机器码;对目标机器码进行数据加载,以实现对初始数据的组包解包处理。采用本方法能够能高效又灵活地实现数据组包解包。
Description
技术领域
本申请涉及数据处理技术领域,特别是涉及一种数据组包解包方法、装置和计算机设备。
背景技术
在仿真模型与外部设备进行数据交互的过程中,需要按照特定格式对数据进行组包后才能写入设备,或从设备中读取的数据需要经过解包后,才能供仿真模型使用。
目前,多采用一种静态封装法,按照不同的设备协议给每种外部设备封装对应的设备模块,将每个设备模块分别加入至仿真模型中,并与仿真模型中的计算模块进行连接即可实现组包解包功能。然而,由于每种外部设备都需要进行模块封装,使得过程繁琐且工作量大,并且一旦模块封装好后,在工程现场无法灵活地修改调试。因此,如何高效又灵活地对数据进行组包解包是现阶段要解决的问题。
发明内容
基于此,本申请目的在于提供一种能高效又灵活地实现数据组包解包的方法、装置和计算机设备,来解决上述背景技术中提及的技术问题。
第一方面,本申请提供了一种数据组包解包方法。包括:
当获取初始数据时,确定所述初始数据对应的目标模型,并根据所述目标模型的模型规模确定组包解包方式;
当所述组包解包方式对应机器码模式时,确定所述目标模型的仿真机架构,并通过预设的配置信息和所述仿真机架构,得到目标机器码;
对所述目标机器码进行数据加载,以实现对所述初始数据的组包解包处理。
在一个实施例中,上述方法还包括:当所述组包解包方式对应源代码模式时,将根据所述配置信息,将所述初始数据和多个预设字段转换成第一代码;所述第一代码包括C指令代码;对编译后的所述第一代码进行数据加载,以实现对所述初始数据的组包解包处理。
在一个实施例中,根据所述配置信息,将所述初始数据和多个预设字段转换成第一代码,包括:从所述配置信息中确定每个所述预设字段各自对应的多个数据属性信息;根据多个所述预设字段和多个所述数据属性信息,确定目标数据结构;根据所述目标数据结构、多个所述数据属性信息和所述初始数据,得到第一代码。
在一个实施例中,数据属性信息包括符号位和比特数;所述根据所述目标数据结构、多个所述数据属性信息和所述初始数据,得到第一代码,包括:针对每个所述预设字段,均根据对应的所述符号位和所述比特数,对相应的预设字段进行初步转换,得到初步转换结果;从多个预设字段中确定出所述初始数据对应的初始字段,并通过所述初始数据对所述初始字段进行赋值处理,得到候选转换结果;综合所述初步转换结果和所述候选转换结果,生成第一代码。
在一个实施例中,通过预设的配置信息和所述仿真机架构,得到目标机器码,包括:根据所述配置信息,将所述初始数据和多个预设字段转换成第二代码;所述第二代码包括中间汇编指令代码;确定所述仿真机架构关联的处理器指令目录,并按照所述处理器指令目录,将所述第二代码转换成目标机器码。
在一个实施例中,根据所述配置信息,将所述初始数据和多个预设字段转换成第二代码,包括:获取所述预设字段对应的目标数据结构;确定所述仿真机架构中的通用寄存器;所述通用寄存器包括基址指针寄存器、栈指针寄存器和累加器寄存器;通过所述通用寄存器,并将所述初始数据按照所述目标数据结构,对相应的所述预设字段进行赋值处理,直至得到第二代码。
在一个实施例中,对所述目标机器码进行数据加载,以实现对所述初始数据的组包解包处理,包括:将所述目标机器码加载进目标内存,并确定所述初始数据的数据用途;所述数据用途包括数据组包和数据解包;跳转至所述目标内存,并根据所述数据用途执行所述目标机器码,以实现对所述初始数据的组包解包处理。
第二方面,本申请还提供了一种数据组包解包装置。包括:
初始数据获取模块,用于当获取初始数据时,确定所述初始数据对应的目标模型,并根据所述目标模型的模型规模确定组包解包方式;
目标机器码确定模块,用于当所述组包解包方式对应机器码模式时,确定所述目标模型的仿真机架构;通过预设的配置信息和所述仿真机架构,得到目标机器码;
目标机器码加载模块,用于对所述目标机器码进行数据加载,以实现对所述初始数据的组包解包处理。
第三方面,本申请还提供了一种计算机设备。计算机设备包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:
当获取初始数据时,确定所述初始数据对应的目标模型,并根据所述目标模型的模型规模确定组包解包方式;
当所述组包解包方式对应机器码模式时,确定所述目标模型的仿真机架构,并通过预设的配置信息和所述仿真机架构,得到目标机器码;
对所述目标机器码进行数据加载,以实现对所述初始数据的组包解包处理。
第四方面,本申请还提供了一种计算机可读存储介质。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
当获取初始数据时,确定所述初始数据对应的目标模型,并根据所述目标模型的模型规模确定组包解包方式;
当所述组包解包方式对应机器码模式时,确定所述目标模型的仿真机架构,并通过预设的配置信息和所述仿真机架构,得到目标机器码;
对所述目标机器码进行数据加载,以实现对所述初始数据的组包解包处理。
上述数据组包解包方法、装置、计算机设备和可读存储介质,当获取初始数据时,通过确定初始数据对应的目标模型,便可直接根据目标模型的模型规模确定组包解包方式,使得后续在进行模型仿真时,只需要使用通用IO模块来确定初始数据的交互,而无需关心目标模型的具体功能,因此,组包解包的过程更具灵活性。 通过多功能选配出组包解包方式对应机器码模式时,通过确定目标模型的仿真机架构,便可通过预设的配置信息和仿真机架构,得到目标机器码,进而在对目标机器码进行数据加载时,实现对初始数据的组包解包处理。由于可根据实际的工程需要来选择不同的实现路线,在选择的机器码模式路线,实现了从配置信息到功能性机器码的高效转化,无需进行额外的编译操作,降低了后续进行组包解包处理的时间,也提高了组包解包处理的效率。
附图说明
图1为一个实施例中数据组包解包方法的应用环境图;
图2为一个实施例中数据组包解包方法的流程示意图;
图3为一个实施例中数据组包解包的工作结构示意图;
图4为另一个实施例中数据组包解包方法的流程示意图;
图5为一个实施例中数据包的目标数据结构的结构示意图;
图6为一个实施例中示例性的第一代码;
图7为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的数据组包解包方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。终端102可为不同类型的外部设备,该外部设备用于获取组包后的数据或发送需要解包的数据。服务器104用于确定获取的初始数据对应的目标模型,并根据目标模型的模型规模确定组包解包方式;当组包解包方式对应机器码模式时,确定目标模型的仿真机架构。服务器104还用于通过预设的配置信息和仿真机架构,得到目标机器码,并对目标机器码进行数据加载,以实现对初始数据的组包解包处理,以使得终端102接收组包后的数据。服务器104用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种数据组包解包方法,以该方法应用于图1中的服务器,包括以下步骤:
步骤202,当获取初始数据时,确定初始数据对应的目标模型,并根据目标模型的模型规模确定组包解包方式。
其中,在通过仿真机进行模型仿真的过程中,要将数据按照设备规定的特定格式进行摆放后才能写入设备,也即称为数据组包过程;从外部设备中读取的数据,需要经过一定处理才能供仿真机中的仿真模型使用,也即称为数据解包过程。仿真机中包括多种仿真模型;目标模型表征用户需要与外部设备进行数据交互的仿真模型。
其中,数据组包解包方法包括建模阶段,如图3所示,图3为数据组包解包的工作结构图。服务器可为一种带配置文件的通用IO模块,根据使用的外部设备的数量添加相应数量的IO模块,实现二者的相互通信;将计算模块和每个IO模块之间相互连接后,与承载在仿真机上的仿真模型相关联;计算模块用于实现模型仿真。由于不同的外部设备在建模时使用同样的IO模块,而IO模块的具体功能根据配置文件不同而不同,从而实现一个IO模块适配所有外部设备。
具体地,当初始数据的数据用途为数据组包时,服务器响应于用户的选择操作,从多种仿真模型中确定出初始数据对应的目标模型。服务器确定出目标模型的模型规模,并根据用户预设的模型规模极值,判断后续对初始数据的组包解包方式。当模型规模大于等于预设的规模极值时,后续花费在代码转换的耗时会较多,因此采用机器码模式的组包解包方式。当模型规模小于预设的规模极值时,可灵活在不同仿真机对应多种架构平台上进行模型仿真,因此采用源代码模式的组包解包方式。
步骤204,当组包解包方式对应机器码模式时,确定目标模型的仿真机架构,并通过预设的配置信息和仿真机架构,得到目标机器码。
其中,数据组包解包方法还包括设备配置阶段,如图4所示,图4为另一个实施例中数据组包解包方法的流程示意图。设备配置主要由两部分组成,一部分是数据包的配置,也即配置信息包含数据在数据包中偏移、比特数、符号位以及缩放因子等数据属性信息。另一部分是设备固件,这部分是与外部设备相关联的且具有统一接口的程序段。设备固件主要功能是实现外部设备驱动,并对外提供统一的设备初始化、发送、接收、注销功能以及其它与数据包组装、拆分无关的功能等。
具体地,参考图4所示,当服务器获取到设备配置文件中的配置信息,并确定组包解包方式对应机器码模式时,便可响应于用户的对仿真机的选择操作,确定承载目标模型的目标仿真机,进而确定目标仿真机的仿真机架构。服务器根据配置信息以及仿真机架构的相关信息,先生成中间汇编指令代码,再将中间汇编指令代码转换成可进行数据加载的目标机器码,以确保实现组包解包功能的代码无复杂结构,无需再实现编译器的词法、语法、语义分析等复杂功能,便可根据配置信息直接生成中间汇编语言代码。
在一个实施例中,上述方法还包括:当组包解包方式对应源代码模式时,将根据配置信息,将初始数据和多个预设字段转换成第一代码;对编译后的第一代码进行数据加载,以实现对初始数据的组包解包处理。
其中,第一代码包括C指令代码;预设字段与组包解包功能对应的数据包的目标数据结构相关联,如图5所示,图5为一种数据包的目标数据结构的结构示意图。例如,数据包长8个比特,包含3个预设字段,分别是数据1、保留位和数据2。
具体地,参考图4所示,当服务器获取到设备配置文件中的配置信息,并确定组包解包方式对应源代码模式时,根据数据包配置信息、初始数据和多个预设字段生成相应的实现组包和解包功能的第一代码。由于生成的目标模型一般需要放在目标仿真机上编译,所以生成的第一代码可随目标模型进行编译,从而给通用IO模块添加了实际的程序功能。且源代码模式实现简单,兼容性强,适用目标模型规模较小,需要在不同仿真机对应多种架构平台上进行模型仿真的场景。服务器将第一代码编译成功能模块,并将功能模块和设备固件进行程序模块合并,以使得在对功能模块进行数据加载时,实现对初始数据的组包解包处理。
在本实施例中,当组包解包方式对应源代码模式时,可根据配置文件中的配置信息生成相应的组包解包C指令代码,代替了手工编写该部分功能代码,减少重复劳动,也降低了出错的概率。此外,直接将初始数据和多个预设字段映射到数据包,进而对第一代码进行数据加载时,快速实现对初始数据的组包解包处理,既具有数据高效处理优点,又实现了目标模型的功能的灵活可配。
步骤206,对目标机器码进行数据加载,以实现对初始数据的组包解包处理。
在一个实施例中,对目标机器码进行数据加载,以实现对初始数据的组包解包处理,包括:将目标机器码加载进目标内存,并确定初始数据的数据用途;跳转至目标内存,并根据数据用途执行目标机器码,以实现对初始数据的组包解包处理。
其中,数据用途包括数据组包和数据解包。
具体地,服务器将目标机器码加载进目标内存进行存储,并当初始数据的数据用途为实现数据组包时,也即初始数据按照设备规定的特定格式转换成数据包格式后才能写入设备,此时调用目标内存中的目标机器码,使得实现组包功能的执行。当初始数据的数据用途为实现数据解包时,也即从外部设备中读取的初始数据,需要经过一定处理才能供仿真机中的仿真模型使用,此时调用目标内存中的目标机器码,使得实现解包功能的执行。
上述数据组包解包方法中,当获取初始数据时,通过确定初始数据对应的目标模型,便可直接根据目标模型的模型规模确定组包解包方式,使得后续在进行模型仿真时,只需要使用通用IO模块来确定初始数据的交互,而无需关心目标模型的具体功能,因此,组包解包的过程更具灵活性。 通过多功能选配出组包解包方式对应机器码模式时,通过确定目标模型的仿真机架构,便可通过预设的配置信息和仿真机架构,得到目标机器码,进而在对目标机器码进行数据加载时,实现对初始数据的组包解包处理。由于可根据实际的工程需要来选择不同的实现路线,在选择的机器码模式路线,实现了从配置信息到功能性机器码的高效转化,无需进行额外的编译操作,降低了后续进行组包解包处理的时间,也提高了组包解包处理的效率。
此外,本方案具有现场可编程特性。通过简化了仿真模型和外部设备交互的操作,在没有专业编程人员的参与下,仍可通过简易的操作完成对模块功能的定制化配置开发。并且在工程现场可直接更改配置信息,来生成第一代码或目标机器码并进行调试,无需关心程序实现细节。针对需要进行保密实施的工程中,通过配置信息的现场更改,而无需从开发阶段来获取相应功能的配置信息,使得实施相应功能的过程和场景更加多样化。
在一个实施例中,根据配置信息,将初始数据和多个预设字段转换成第一代码,包括:从配置信息中确定每个预设字段各自对应的多个数据属性信息; 根据多个预设字段和多个数据属性信息,确定目标数据结构;根据目标数据结构、多个数据属性信息和初始数据,得到第一代码。
具体地,当预设字段对应于图5中的目标数据结构时,容易理解的,此时的目标数据结构为未配置相关数据属性信息的一种空的数据结构。服务器从配置信息中确定每个预设字段各自对应的多个数据属性信息。例如,针对配置信息中的起始偏移、比特数、符号位等,当预设字段为数据1时,确定对应的起始偏移为0、比特数为3、符号位为无符号、缩放因子为1;当预设字段为保留位时,确定对应的起始偏移为3、比特数为3、符号位为无符号、缩放因子为1;当预设字段为数据2时,确定对应的起始偏移为6、比特数为2、符号位为无符号、缩放因子为1。服务器综合多个预设字段、以及每个预设字段各自对应的数据属性信息,便可构建出关联了数据属性信息的目标数据结构。由于在C指令代码的语言环境中,常用结构体表示自定义数据,其位域功能用在一些长度不是标准内置数据类型,因此,服务器便可基于C指令代码的语言环境,并结合目标数据结构,将多个数据属性信息和初始数转换成第一代码。
在一个实施例中,根据目标数据结构、多个数据属性信息和初始数据,得到第一代码,包括:针对每个预设字段,均根据对应的符号位和比特数,对相应的预设字段进行初步转换,得到初步转换结果;从多个预设字段中确定出初始数据对应的初始字段,并通过初始数据对初始字段进行赋值处理,得到候选转换结果;综合初步转换结果和候选转换结果,生成第一代码。
其中,初始数据可表征需要对预设字段进行赋值的数据,例如,给数据1赋值为5,数据2赋值为3,也即其中的5和3均为初始数据。
具体地,参考上述举例,当预设字段为数据1时,服务器根据对应的无符号和比特数3,对数据1进行初步转换,得到初步转换结果unsigned char d_0:3;当预设字段为保留位时,服务器根据对应的无符号和比特数3,对保留位进行初步转换,得到初步转换结果unsigned char d_1:3;当预设字段为数据1时,服务器根据对应的无符号和比特数2,对数据1进行初步转换,得到初步转换结果unsigned char d_3:2。
由于初始数据可为多个,服务器均确定每个初始数据各自对应的初始字段,初始字段也即多个预设字段中需要进行赋值的预设字段,进而通过初始数据对初始字段进行赋值处理,得到候选转换结果。例如,初始数据为5时,确定对应的初始字段为数据1,因此进行赋值处理得到的候选转换结果为data.d_0=5;初始数据为3时,确定对应的初始字段为数据2,因此进行赋值处理得到的候选转换结果为data.d_2=3。因此,当服务器综合初步转换结果和候选转换结果时,便可构建出第一代码,示例性如图6所示。
在本实施例中,采只需要使用通用IO模块来确定初始数据的交互,而无需关心目标模型的具体功能,此时的目标模块是空白无功能的,在通过配置信息便可进行灵活配置中决定,因此简化了模型的搭建,相比较于静态封装法的每种设备对应独特模块,本方案更具有灵活性。此外,针对源代码模式还具有实现简单,兼容性强,适用模型规模一般大小,可适应需要在多种架构平台上仿真的需求。
在一个实施例中,通过预设的配置信息和仿真机架构,得到目标机器码,包括:根据配置信息,将初始数据和多个预设字段转换成第二代码;确定仿真机架构关联的处理器指令目录,并按照处理器指令目录,将第二代码转换成目标机器码。
其中,第二代码包括中间汇编指令代码;仿真机架构可为一种x86架构64位处理器。
具体地,由于组包解包方式对应的C指令代码需要随目标模型进行编译,当目标模型发生不改变而组包解包的配置信息更改时,则需要重新编译目标模型,因此,组包解包方式对应的机器码模式,可通过预设的配置信息并基于不同的仿真机架构,先生成一种汇编语言的第二代码,也即中间汇编指令代码,当后续对目标机器码进行数据加载时,可直接运行目标机器码,便可完成IO模块的组包解包功能,而不需要重新编译目标模型。服务器确定仿真机架构关联的处理器指令目录,便响应于用户按照处理器指令目录的编写触发操作,逐句将生成的第二代码转化成目标机器码。
在一个实施例中,根据配置信息,将初始数据和多个预设字段转换成第二代码,包括:获取预设字段对应的目标数据结构;确定仿真机架构中的通用寄存器;通过通用寄存器,并将初始数据按照目标数据结构,对相应的预设字段进行赋值处理,直至得到第二代码。
其中,通用寄存器包括基址指针寄存器、栈指针寄存器和累加器寄存器,以x86架构64位处理器为例,根据配置信息生成的第二代码如下表1所示。
表1:
具体地,针对生成的第二代码中的第1-2行,表征服务器进行函数调用时,将基址指针寄存器入栈(rbp),并将栈指针寄存器(rsp)赋给基址指针寄存器。其中,rbp为64位基址指针寄存器,rsp为64位栈指针寄存器。针对生成的第二代码中的第3-6行:当预设字段为数据1时,服务器实现对目标数据结构中数据1的赋值。由于定义的数据包是8个比特,在函数中临时变量存在栈中,且栈是向下生长的,所以rbp-1就是数据包存放的地方。因此,第3行是将数据包的8位比特数据移入累加器寄存器(eax),若累加器寄存器位数比数据包长,则将超出部分赋值为0。其中,eax可为32位累加器寄存器。在第4行中,数据1占3个比特,因此先通过逻辑与运算进行清0,且为低3位。第5行则将累加器寄存器和初始数据5进行逻辑或运算,即将5赋值进低3位。第6行则将累加器寄存器的低8位放回栈中数据包所在位置,则完成了初始数据5对预设字段中的数据1的赋值。针对生成的第二代码中的第7-9行:与第3-6行采用的操作类似,也即将高2位的初始数据3赋值给预设字段中的数据2。针对生成的第二代码中的第10-12行:服务器将基址指针寄存器出栈,并进行函数返回,得到能进行组包解包功能的第二代码。
在本实施例中,在选择的机器码模式路线时,实现了从配置信息到功能性机器码的高效转化,且模型规模大于等于预设的规模极值,无需进行额外的编译操作,降低了后续进行组包解包处理的时间,也提高了组包解包处理的效率。
在一个实施例中,以x86架构64位处理器为例,x86机器汇编语言编码依次由以下表2所示部分组成,其中,除操作码外,其它均为非必需段,可根据指令不同而构成。
表2:
例如,以上述生成的第二代码中的第2行,将堆栈指针寄存器的值移到基址寄存器,其生成的机器码十六进制表示为4889E5,生成结果可如表1所示。
应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的数据组包解包方法的数据组包解包装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个数据组包解包装置实施例中的具体限定可以参见上文中对于数据组包解包方法的限定,在此不再赘述。
在一个实施例中,提供了一种数据组包解包装置,包括:初始数据获取模块、目标机器码确定模块和目标机器码加载模块,其中:
初始数据获取模块,用于当获取初始数据时,确定初始数据对应的目标模型,并根据目标模型的模型规模确定组包解包方式。
目标机器码确定模块,用于当组包解包方式对应机器码模式时,确定目标模型的仿真机架构;通过预设的配置信息和仿真机架构,得到目标机器码。
目标机器码加载模块,用于对目标机器码进行数据加载,以实现对初始数据的组包解包处理。
上述数据组包解包中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图7所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储组包解包后的数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据组包解包方法。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresjstjve Random Access Memory,MRAM)、铁电存储器(FerroelectrjcRandom Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(StatjcRandom Access Memory,SRAM)或动态随机存取存储器(Dynamjc Random Access Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (8)
1.一种数据组包解包方法,其特征在于,所述方法包括:
当获取初始数据时,确定所述初始数据对应的目标模型,并根据所述目标模型的模型规模确定组包解包方式;
当所述组包解包方式对应机器码模式时,确定所述目标模型的仿真机架构,并通过预设的配置信息和所述仿真机架构,得到目标机器码;
对所述目标机器码进行数据加载,以实现对所述初始数据的组包解包处理;
所述通过预设的配置信息和所述仿真机架构,得到目标机器码,包括:
根据所述配置信息,将所述初始数据和多个预设字段转换成第二代码;所述第二代码包括中间汇编指令代码;具体为:获取所述预设字段对应的目标数据结构;确定所述仿真机架构中的通用寄存器;所述通用寄存器包括基址指针寄存器、栈指针寄存器和累加器寄存器;通过所述通用寄存器,并将所述初始数据按照所述目标数据结构,对相应的所述预设字段进行赋值处理,直至得到第二代码;
确定所述仿真机架构关联的处理器指令目录,并按照所述处理器指令目录,将所述第二代码转换成目标机器码。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述组包解包方式对应源代码模式时,将根据所述配置信息,将所述初始数据和多个预设字段转换成第一代码;所述第一代码包括C指令代码;
对编译后的所述第一代码进行数据加载,以实现对所述初始数据的组包解包处理。
3.根据权利要求2所述的方法,其特征在于,所述根据所述配置信息,将所述初始数据和多个预设字段转换成第一代码,包括:
从所述配置信息中确定每个所述预设字段各自对应的多个数据属性信息;
根据多个所述预设字段和多个所述数据属性信息,确定目标数据结构;
根据所述目标数据结构、多个所述数据属性信息和所述初始数据,得到第一代码。
4.根据权利要求3所述的方法,其特征在于,所述数据属性信息包括符号位和比特数;所述根据所述目标数据结构、多个所述数据属性信息和所述初始数据,得到第一代码,包括:
针对每个所述预设字段,均根据对应的所述符号位和所述比特数,对相应的预设字段进行初步转换,得到初步转换结果;
从多个预设字段中确定出所述初始数据对应的初始字段,并通过所述初始数据对所述初始字段进行赋值处理,得到候选转换结果;
综合所述初步转换结果和所述候选转换结果,生成第一代码。
5.根据权利要求1-4任意一项所述的方法,其特征在于,所述对所述目标机器码进行数据加载,以实现对所述初始数据的组包解包处理,包括:
将所述目标机器码加载进目标内存,并确定所述初始数据的数据用途;所述数据用途包括数据组包和数据解包;
跳转至所述目标内存,并根据所述数据用途执行所述目标机器码,以实现对所述初始数据的组包解包处理。
6.一种数据组包解包装置,其特征在于,用于实现权利要求1-5任一项所述的方法,所述装置包括:
初始数据获取模块,用于当获取初始数据时,确定所述初始数据对应的目标模型,并根据所述目标模型的模型规模确定组包解包方式;
目标机器码确定模块,用于当所述组包解包方式对应机器码模式时,确定所述目标模型的仿真机架构;通过预设的配置信息和所述仿真机架构,得到目标机器码;
目标机器码加载模块,用于对所述目标机器码进行数据加载,以实现对所述初始数据的组包解包处理。
7.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述的方法的步骤。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410095815.6A CN117608590B (zh) | 2024-01-24 | 2024-01-24 | 数据组包解包方法、装置和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410095815.6A CN117608590B (zh) | 2024-01-24 | 2024-01-24 | 数据组包解包方法、装置和计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117608590A CN117608590A (zh) | 2024-02-27 |
CN117608590B true CN117608590B (zh) | 2024-04-09 |
Family
ID=89946590
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410095815.6A Active CN117608590B (zh) | 2024-01-24 | 2024-01-24 | 数据组包解包方法、装置和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117608590B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101523349A (zh) * | 2006-10-02 | 2009-09-02 | 特兰斯蒂有限公司 | 计算机系统和改编计算机系统以使其支持寄存器窗口架构的方法 |
CN103544007A (zh) * | 2013-10-10 | 2014-01-29 | 深圳市九洲电器有限公司 | 一种模拟机顶盒功能的装置、终端设备及方法 |
CN104049948A (zh) * | 2013-03-16 | 2014-09-17 | 英特尔公司 | 指令仿真处理器、方法和系统 |
WO2022179944A1 (en) * | 2021-02-26 | 2022-09-01 | International Business Machines Corporation | Vector pack and unpack instructions |
CN115269006A (zh) * | 2022-08-03 | 2022-11-01 | 北京奕斯伟计算技术股份有限公司 | 机器码指令转换方法、装置、电子设备及可读存储介质 |
CN115618587A (zh) * | 2022-09-30 | 2023-01-17 | 成都飞机工业(集团)有限责任公司 | 一种无人机仿真模型故障注入方法、装置、设备及介质 |
CN115951973A (zh) * | 2023-01-20 | 2023-04-11 | 昆易电子科技(上海)有限公司 | 模型处理方法、装置、终端设备及存储介质 |
CN116431317A (zh) * | 2023-06-12 | 2023-07-14 | 西安羚控电子科技有限公司 | 一种基于Vxworks仿真接口调度方法 |
CN116501665A (zh) * | 2023-04-21 | 2023-07-28 | 北京地平线信息技术有限公司 | 数据寄存器访问方法、装置、可读存储介质及电子设备 |
CN116521231A (zh) * | 2023-04-06 | 2023-08-01 | 北京时代民芯科技有限公司 | 一种用于sparc v8指令集动态仿真验证的参考模型 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7428661B2 (en) * | 2001-09-21 | 2008-09-23 | Sam Michael | Test and debug processor and method |
US8086438B2 (en) * | 2002-03-27 | 2011-12-27 | Synopsys, Inc. | Method and system for instruction-set architecture simulation using just in time compilation |
US8407681B2 (en) * | 2008-05-23 | 2013-03-26 | International Business Machines Corporation | System and method for changing variables at runtime |
US9501591B2 (en) * | 2013-12-09 | 2016-11-22 | International Business Machines Corporation | Dynamically modifiable component model |
US10635474B2 (en) * | 2016-05-09 | 2020-04-28 | Marvell Asia Pte, Ltd. | Systems and methods for virtio based optimization of data packet paths between a virtual machine and a network device for live virtual machine migration |
CN112463277B (zh) * | 2018-05-04 | 2022-06-24 | 茨特里克斯系统公司 | 提供利用用户和系统提示优化的分层显示远程处理的计算机系统及相关方法 |
CN113452471B (zh) * | 2020-03-26 | 2024-07-19 | 伊姆西Ip控股有限责任公司 | 用于数据处理的方法、电子设备以及计算机程序产品 |
US11652749B2 (en) * | 2021-04-09 | 2023-05-16 | Microsoft Technology Licensing, Llc | High availability for hardware-based packet flow processing |
-
2024
- 2024-01-24 CN CN202410095815.6A patent/CN117608590B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101523349A (zh) * | 2006-10-02 | 2009-09-02 | 特兰斯蒂有限公司 | 计算机系统和改编计算机系统以使其支持寄存器窗口架构的方法 |
CN104049948A (zh) * | 2013-03-16 | 2014-09-17 | 英特尔公司 | 指令仿真处理器、方法和系统 |
CN103544007A (zh) * | 2013-10-10 | 2014-01-29 | 深圳市九洲电器有限公司 | 一种模拟机顶盒功能的装置、终端设备及方法 |
WO2022179944A1 (en) * | 2021-02-26 | 2022-09-01 | International Business Machines Corporation | Vector pack and unpack instructions |
CN115269006A (zh) * | 2022-08-03 | 2022-11-01 | 北京奕斯伟计算技术股份有限公司 | 机器码指令转换方法、装置、电子设备及可读存储介质 |
CN115618587A (zh) * | 2022-09-30 | 2023-01-17 | 成都飞机工业(集团)有限责任公司 | 一种无人机仿真模型故障注入方法、装置、设备及介质 |
CN115951973A (zh) * | 2023-01-20 | 2023-04-11 | 昆易电子科技(上海)有限公司 | 模型处理方法、装置、终端设备及存储介质 |
CN116521231A (zh) * | 2023-04-06 | 2023-08-01 | 北京时代民芯科技有限公司 | 一种用于sparc v8指令集动态仿真验证的参考模型 |
CN116501665A (zh) * | 2023-04-21 | 2023-07-28 | 北京地平线信息技术有限公司 | 数据寄存器访问方法、装置、可读存储介质及电子设备 |
CN116431317A (zh) * | 2023-06-12 | 2023-07-14 | 西安羚控电子科技有限公司 | 一种基于Vxworks仿真接口调度方法 |
Also Published As
Publication number | Publication date |
---|---|
CN117608590A (zh) | 2024-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6496922B1 (en) | Method and apparatus for multiplatform stateless instruction set architecture (ISA) using ISA tags on-the-fly instruction translation | |
US5911074A (en) | Process for manipulating data models used in software engineering | |
US7207038B2 (en) | Constructing control flows graphs of binary executable programs at post-link time | |
JP4050764B2 (ja) | コンパイルシステム | |
US20210365253A1 (en) | Heterogeneity-agnostic and topology-agnostic data plane programming | |
US5701487A (en) | Method and apparatus for displaying locations of errors detected inside software macro calls | |
CN104346274B (zh) | 程序调试器及一种程序的调试方法 | |
US20040003377A1 (en) | Converting byte code instructions to a new instruction set | |
CN111124551A (zh) | 数据序列化、数据反序列化方法、装置和计算机设备 | |
US20230004365A1 (en) | Multistage compiler architecture | |
JP2021184246A (ja) | 命令変換支援プログラム、命令変換支援方法および情報処理装置 | |
US7457927B2 (en) | Memory dump of a computer system | |
CN116775127B (zh) | 一种基于RetroWrite框架的静态符号执行插桩方法 | |
CN117608590B (zh) | 数据组包解包方法、装置和计算机设备 | |
CN117270871A (zh) | Ai算子构建方法、运算方法、服务器和存储介质 | |
WO2019171794A1 (ja) | サポート装置およびサポートプログラム | |
US11886839B2 (en) | Non-transitory computer-readable recording medium, function generation method, and information processing device | |
US11635947B2 (en) | Instruction translation support method and information processing apparatus | |
US11573777B2 (en) | Method and apparatus for enabling autonomous acceleration of dataflow AI applications | |
CN115328679A (zh) | 异构函数库的自动化集成方法、计算设备及其系统 | |
CN114201176A (zh) | 一种智能合约编译匹配方法、装置、设备和存储介质 | |
US7024664B2 (en) | Symbolic assembly language | |
US20040098708A1 (en) | Simulator for software development and recording medium having simulation program recorded therein | |
Werner et al. | Transforming Truth Tables to Binary Decision Diagrams Using the Role-based Synchronization Approach. | |
JPH05119960A (ja) | バイトオーダ依存コーデイング検出方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |