CN116932149A - 数据处理方法和装置 - Google Patents

数据处理方法和装置 Download PDF

Info

Publication number
CN116932149A
CN116932149A CN202311206331.6A CN202311206331A CN116932149A CN 116932149 A CN116932149 A CN 116932149A CN 202311206331 A CN202311206331 A CN 202311206331A CN 116932149 A CN116932149 A CN 116932149A
Authority
CN
China
Prior art keywords
tree structure
binary file
webassembly
binary
webassemblem
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.)
Pending
Application number
CN202311206331.6A
Other languages
English (en)
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.)
Beijing CEC Huada Electronic Design Co Ltd
Original Assignee
Beijing CEC Huada Electronic Design 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 Beijing CEC Huada Electronic Design Co Ltd filed Critical Beijing CEC Huada Electronic Design Co Ltd
Priority to CN202311206331.6A priority Critical patent/CN116932149A/zh
Publication of CN116932149A publication Critical patent/CN116932149A/zh
Pending legal-status Critical Current

Links

Classifications

    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请一个或多个实施例提供一种数据处理方法和装置,所述方法包括:获取待比较的第一二进制文件和第二二进制文件;基于WebAssembly虚拟机规范,分别对所述第一二进制文件和所述第二二进制文件进行解析,以生成与所述第一二进制文件对应的第一树状结构,以及与所述第二二进制文件对应的第二树状结构;其中,树状结构中的节点包含WebAssembly二进制文件中的单元数据;将所述第一树状结构与所述第二树状结构进行比较,以确定所述第一树状结构和所述第二树状结构中的差异节点;在可视化界面中,针对所述第一树状结构、所述第二树状结构和所述差异节点进行输出。

Description

数据处理方法和装置
技术领域
本申请一个或多个实施例涉及计算机技术领域,尤其涉及一种数据处理方法和装置。
背景技术
WebAssembly是一种新的编码格式,其类似于一种低级的汇编语言,但是可以提供新的性能特性和效果。WebAssembly设计的目的是为高级语言(例如:C、C++、Rust等)提供一个高效的编译目标。
模块是WebAssembly程序编译、传输和加载的单位。基于高级语言编写的程序(例如:应用程序、程序库、系统函数等)的程序代码,可以被编译成WebAssembly程序模块。WebAssembly程序模块实际上是一种以WebAssembly二进制文件的形式呈现的字节码,可以被加载到WebAssembly虚拟机中,由WebAssembly虚拟机解释成机器码并执行。WebAssembly二进制文件通常以.wasm作为文件后缀。
在实际的应用中,极有可能出现需要对两个WebAssembly二进制文件进行比较,以判断这两个WebAssembly二进制文件是否存在差异的情况。然而,字节码对于用户而言通常是难以阅读和理解的,因此用户通常无法直接阅读和比较WebAssembly二进制文件。在这种情况下,如何实现针对WebAssembly二进制文件的较为直观的阅读和比较,就成为了亟待解决的问题。
发明内容
本申请一个或多个实施例提供技术方案如下:
本申请还提供一种数据处理方法,所述方法包括:
获取待比较的第一WebAssembly二进制文件和第二WebAssembly二进制文件;
基于WebAssembly虚拟机规范,分别对所述第一WebAssembly二进制文件和所述第二WebAssembly二进制文件进行解析,以生成与所述第一WebAssembly二进制文件对应的第一树状结构,以及与所述第二WebAssembly二进制文件对应的第二树状结构;其中,树状结构中的节点包含WebAssembly二进制文件中的单元数据;
将所述第一树状结构与所述第二树状结构进行比较,以确定所述第一树状结构和所述第二树状结构中的差异节点;
在可视化界面中,针对所述第一树状结构、所述第二树状结构和所述差异节点进行输出。
本申请还提供一种数据处理装置,所述装置包括:
获取单元,用于获取待比较的第一WebAssembly二进制文件和第二WebAssembly二进制文件;
解析单元,用于基于WebAssembly虚拟机规范,分别对所述第一WebAssembly二进制文件和所述第二WebAssembly二进制文件进行解析,以生成与所述第一WebAssembly二进制文件对应的第一树状结构,以及与所述第二WebAssembly二进制文件对应的第二树状结构;其中,树状结构中的节点包含WebAssembly二进制文件中的单元数据;
比较单元,用于将所述第一树状结构与所述第二树状结构进行比较,以确定所述第一树状结构和所述第二树状结构中的差异节点;
输出单元,用于在可视化界面中,针对所述第一树状结构、所述第二树状结构和所述差异节点进行输出。
本申请还提供一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如上述任一项所述方法的步骤。
本申请还提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述任一项所述方法的步骤。
在上述技术方案中,可以基于WebAssembly虚拟机规范,分别对待比较的第一WebAssembly二进制文件和第二WebAssembly二进制文件进行解析,以生成与该第一WebAssembly二进制文件对应的第一树状结构,以及与该第二WebAssembly二进制文件对应的第二树状结构,后续可以将该第一树状结构与该第二树状结构进行比较,以确定该第一树状结构和该第二树状结构中的差异节点,从而可以在可视化界面中,针对该第一树状结构、该第二树状结构和其中的差异节点进行输出。
采用上述方式,通过在可视化界面中,针对与不同的WebAssembly二进制文件对应的树状结构和其中的差异节点进行输出,可以实现针对WebAssembly二进制文件的较为直观的阅读,并且实现针对不同的比较WebAssembly二进制文件的较为直观的比较。
附图说明
下面将对示例性实施例的描述中所需要使用的附图进行说明,其中:
图1是本申请一示例性实施例示出的一种数据处理方法的流程图;
图2是本申请一示例性实施例示出的一种树状结构的示意图;
图3是本申请一示例性实施例示出的另一种树状结构的示意图;
图4是本申请一示例性实施例示出的一种可视化界面的示意图;
图5是本申请一示例性实施例示出的一种设备的结构示意图;
图6是本申请一示例性实施例示出的一种数据处理装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或者相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请一个或多个实施例相一致的所有实施方式。相反,它们仅是与本申请一个或多个实施例的一些方面相一致的例子。
需要说明的是,在其他实施例中并不一定按照本申请示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本申请所描述的更多或者更少。此外,本申请中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本申请中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
资源受限设备通常是指电量供应有限、计算能力有限以及存储容量有限的电子设备,包括智能卡、安全元件(Secure Element,SE)、物联网设备等。也即,资源受限设备的非易失性存储器(Non-Volatile Memory,NVM)资源有限,一般大小为几十kB至几百kB,最大为几MB;资源受限设备的随机存取存储器(Random Access Memory,RAM)资源也有限,一般为几kB至几十kB。
WebAssembly技术具有快速、高效、可移植的特点,可以在不同的平台上以接近本地速度运行。在实际的应用中,WebAssembly二进制文件通常可以被更快地加载、解析和执行。因此,WebAssembly技术可以较好地适用于资源受限设备。
在资源受限设备中使用WebAssembly技术时,需要将WebAssembly二进制文件加载到WebAssembly虚拟机中,由WebAssembly虚拟机将其解释成机器码并执行。在实际的应用中,极有可能出现需要对两个WebAssembly二进制文件进行比较,以判断这两个WebAssembly二进制文件是否存在差异的情况。然而,字节码对于用户而言通常是难以阅读和理解的,因此用户通常无法直接阅读和比较WebAssembly二进制文件。
本申请一个或多个实施例提供一种用于数据处理的技术方案,通过该技术方案,可以实现针对WebAssembly二进制文件的较为直观的阅读和比较。
为了便于理解,下面先对标准的WebAssembly二进制文件的数据格式进行简要说明。
WebAssembly程序模块包含其程序代码中的函数、表、内存、全局变量、导入信息、导出信息等;另外,还包含内存和表的初始化数据以及模块的入口函数。
作为WebAssembly程序模块的呈现形式的WebAssembly二进制文件一共有11种数据段,分别为类型段、导入段、函数段、表段、内存段、全局段、导出段、起始段、元素段、代码段、数据段和自定义段。其中:
(1)类型段
类型段存储模块使用到的所有函数类型。
(2)导入段和导出段
导入段存储模块所有的导入项目(例如:导入函数的函数名称、与导入函数对应的模块名称),导出段存储模块所有的导出项目(例如:导出函数的函数名称和函数索引)。多个模块可以通过导入项目和导出项目链接在一起。一个模块可以根据该模块包含的导入段中与导入函数对应的模块名称以及导入函数的函数名称,确定该模块需要调用的其他模块以及其他模块中的函数;相应地,一个模块可以对外提供该模块包含的导出段中的导出函数的函数名称,从而使其他模块可以通过将导出函数的函数名称以及该模块的模块名称(通常存储在自定义段中)添加到其他模块包含的导入段中,调用该模块中的导出函数。
(3)函数段和代码段
模块内的函数信息分开存储在函数段和代码段中。函数段存储模块内所有函数对应类型索引,代码段存储模块内所有函数的局部变量信息和字节码。函数段和代码段存储的项目数量一致,且一一对应。
(4)表段和元素段
表段存储模块内定义的所有表,元素段存储表初始化数据。
(5)内存段和数据段
内存段存储模块内定义的所有内存,数据段存储常量和内存初始化数据。
(6)全局段
全局段存储模块内定义的所有全局变量信息。
(7)起始段
起始段存储模块的入口函数索引。
(8)自定义段
自定义段存储自定义信息,包括模块名称、数据段属性等。自定义段还包含namesection字段,该字段中存储函数名、局部变量名等调试信息和第三方扩展信息。
请参考图1,图1是本申请一示例性实施例示出的一种数据处理方法。
在本实施例中,上述数据处理方法可以应用于任意一个电子设备。其中,该电子设备可以是具有存储资源(例如:NVM、RAM等)且具有一定的计算能力的设备,例如:包含一台独立的物理主机的服务器、由多台互相独立的物理主机构成的服务器集群、台式计算机、笔记本电脑、掌上电脑(PDAs,Personal Digital Assistants)等,也可以是智能卡、安全元件、物联网设备等资源受限设备。
在实际的应用中,上述电子设备上还可以搭载WebAssembly虚拟机。在由该电子设备上搭载的WebAssembly虚拟机加载WebAssembly程序模块时,具体可以由该WebAssembly虚拟机读取相应的WebAssembly二进制文件,并将该WebAssembly二进制文件解释成机器码;而在由该WebAssembly虚拟机执行WebAssembly的程序模块时,具体可以由该WebAssembly虚拟机执行对相应的WebAssembly二进制文件进行解释得到的机器码。
需要说明的是,WebAssembly虚拟机可以基于软件方式来实现,而NVM和RAM则可以是作为电子设备的组成部分的硬件。
上述数据处理方法可以包括以下步骤:
步骤101:获取待比较的第一WebAssembly二进制文件和第二WebAssembly二进制文件。
在本实施例中,上述电子设备首先可以获取与待比较的两个WebAssembly程序模块对应的两个WebAssembly二进制文件。其中,这两个WebAssembly程序模块可以分别被称为第一WebAssembly程序模块和第二WebAssembly程序模块;此时,与第一WebAssembly程序模块对应的WebAssembly二进制文件可以被称为第一WebAssembly二进制文件,与第二WebAssembly程序模块对应的WebAssembly二进制文件可以被称为第二WebAssembly二进制文件。
在实际的应用中,WebAssembly程序模块可以包括WebAssembly应用模块、WebAssembly库模块。其中,WebAssembly应用模块可以是通过对基于高级语言编写的应用程序的程序代码进行编译得到的WebAssembly程序模块;WebAssembly库模块可以是通过对基于高级语言编写的程序库的程序代码进行编译得到的WebAssembly程序模块。该程序库中的程序可以作为系统程序的一部分,此时的WebAssembly库模块可以被称为WebAssembly系统库模块。WebAssembly系统库模块的程序代码与虚拟机/解释器的代码(或者操作系统代码)一起编译。
在一个例子中,上述电子设备可以将编译功能分离,由该电子设备之外的其他设备完成编译。在这种情况下,其他设备可以对基于高级语言编写的程序的程序代码进行编译,得到WebAssembly二进制文件,并将该WebAssembly二进制文件发送给该电子设备。
在另一个例子中,上述电子设备可以对外提供编译功能,即由该电子设备完成编译。在这种情况下,该电子设备可以对基于高级语言编写的程序的程序代码进行编译,得到WebAssembly二进制文件。
除此之外,上述电子设备还可以远程获取WebAssembly二进制文件。例如,可以将基于高级语言编写的程序的程序代码进行编译得到的WebAssembly二进制文件存储在远程服务器中,而该电子设备则可以从该远程服务器下载该WebAssembly二进制文件。
需要说明的是,不管是通过编译得到的WebAssembly二进制文件,还是接收到的由其他设备发送的WebAssembly二进制文件,都可以在上述电子设备上搭载的NVM中进行持久化存储,也可以在该电子设备上搭载的RAM中进行暂存,便于后续流程使用。
在一些实施例中,在获取上述第一WebAssembly二进制文件和上述第二WebAssembly二进制文件时,具体可以先获取与该第一WebAssembly二进制文件对应的存储路径(可称为第一存储路径),以及与该第二WebAssembly二进制文件对应的存储路径(可称为第二存储路径),后续可以基于该第一存储路径,以二进制方式读取该第一WebAssembly二进制文件,并基于该第二存储路径,以二进制方式读取该第二WebAssembly二进制文件。
具体地,上述电子设备可以对外提供可交互界面,使得用户可以通过该可交互界面输入上述第一存储路径和上述第二存储路径。该电子设备在获取到由用户输入的该第一存储路径和该第二存储路径后,即可基于该第一存储路径,以二进制方式读取该第一WebAssembly二进制文件,并基于该第二存储路径,以二进制方式读取该第二WebAssembly二进制文件。
以二进制方式读取二进制文件,意味着以原始的二进制形式来读取二进制文件的内容,而不会将二进制文件的内容按照字符编码(如ASCII或Unicode)进行解析和处理,以将其转换为可读的文本形式。以二进制方式读取二进制文件可以保留二进制文件中的所有字节,包括特殊字符、控制字符以及其他非文本数据。
在一些实施例中,在基于上述第一存储路径,以二进制方式读取上述第一WebAssembly二进制文件,并基于上述第二存储路径,以二进制方式读取上述第二WebAssembly二进制文件时,具体可以基于该第一存储路径,以二进制方式读取该第一WebAssembly二进制文件,并将读取到的该第一WebAssembly二进制文件写入至一个内存数组(可称为第一内存数组);并且,还可以基于该第二存储路径,以二进制方式读取该第二WebAssembly二进制文件,并将读取到的该第二WebAssembly二进制文件写入至一个内存数组(可称为第二内存数组)。
内存数组是一种在内存中存储和操作数据的数据结构。它是由一组连续的内存单元组成的,每个内存单元都可以存储一个数据元素,这些数据元素的类型通常是相同的。内存数组可以用于存储和操作多个相关的数据,比如数字、字符串、对象等。内存数组使用一个索引来访问它的数据元素,索引通常是整数类型,表示数据元素在内存数组中的位置。可以通过给定的索引来读取或修改内存数组中的数据元素。
内存数组中的数据元素在内存中是连续存储的,因此访问数据元素时速度非常快,并且可以通过索引来访问任何位置的数据元素。与链表等数据结构不同,内存数组支持随机访问和遍历,这意味着可以按任意顺序访问内存数组中的数据元素,也便于实现搜索、排序和过滤等操作。内存数组能够高效地使用内存空间,并且内存数组无需存储额外的指针或链接字段。内存数组也易于维护和修改。
步骤102:基于WebAssembly虚拟机规范,分别对所述第一WebAssembly二进制文件和所述第二WebAssembly二进制文件进行解析,以生成与所述第一WebAssembly二进制文件对应的第一树状结构,以及与所述第二WebAssembly二进制文件对应的第二树状结构;其中,树状结构中的节点包含WebAssembly二进制文件中的单元数据。
在本实施例中,在获取到上述第一WebAssembly二进制文件和上述第二WebAssembly二进制文件的情况下,可以基于WebAssembly虚拟机规范,对该第一WebAssembly二进制文件进行解析,以生成与该第一WebAssembly二进制文件对应的树状结构(可称为第一树状结构);并且,还可以基于该WebAssembly虚拟机规范,对该第二WebAssembly二进制文件进行解析,以生成与该第二WebAssembly二进制文件对应的树状结构(可称为第二树状结构)。
对于树状结构而言,一个节点即为一个数据元素。上述第一树状结构中的一个节点可以包含上述第一WebAssembly二进制文件中的一个单元数据,即将该第一WebAssembly二进制文件中的一个单元数据作为一个数据元素;同理,上述第二树状结构中的一个节点可以包含上述第二WebAssembly二进制文件中的一个单元数据,即将该第二WebAssembly二进制文件中的一个单元数据作为一个数据元素。
在实际的应用中,为了便于通过树状结构,确定单元数据在WebAssembly二进制文件中的位置,可以由WebAssembly二进制文件中的一个单元数据和这个单元数据在该WebAssembly二进制文件中的位置共同组成一个数据元素。也即,与该WebAssembly二进制文件对应的树状结构中的一个节点包含该WebAssembly二进制文件中的一个单元数据和这个单元数据在该WebAssembly二进制文件中的位置。
需要说明的是,WebAssembly二进制文件中的单元数据指的是具有独立意义的数据片段,例如:类型段中的函数类型,导入段中的函数名称、模块名称,导出段中的函数名称、函数索引,等等。
虚拟机规范是一种定义了虚拟机的行为和功能的规范。它描述了虚拟机的指令集、内存模型、寄存器、异常处理、类加载、字节码执行等方面的细节。虚拟机规范的主要作用是为不同的编程语言和平台提供一个通用的执行环境。
基于WebAssembly虚拟机规范,对WebAssembly二进制文件进行解析,可以从WebAssembly二进制文件中提取出上述单元数据,并且可以确定提取出的这些单元数据之间的层级关系。其中,层级关系可以包括WebAssembly二进制文件中的11种数据段之间的层级关系,以及各个数据段内的单元数据之间的层级关系。
因此,可以根据从上述第一WebAssembly二进制文件中提取出的单元数据,以及确定的提取出的这些单元数据之间的层级关系,生成上述第一树状结构;同理,可以根据从上述第二WebAssembly二进制文件中提取出的单元数据,以及确定的提取出的这些单元数据之间的层级关系,生成上述第二树状结构。
如前所述,上述第一WebAssembly二进制文件可以被写入至上述第一内存数组,上述第二WebAssembly二进制文件可以被写入至上述第二内存数组。在这种情况下,上述第一树状结构中的一个节点可以包含该第一WebAssembly二进制文件中的一个单元数据和这个单元数据在该第一内存数组中的索引;同理,上述第二树状结构中的一个节点可以包含该第二WebAssembly二进制文件中的一个单元数据和这个单元数据在该第二内存数组中的索引。这样,通过树状结构,不仅可以确定WebAssembly二进制文件中的单元数据,还可以确定各个单元数据在用于存储该WebAssembly二进制文件的内存数组中的索引,从而可以通过索引在该内存数组中快速访问各个单元数据。
步骤103:将所述第一树状结构与所述第二树状结构进行比较,以确定所述第一树状结构和所述第二树状结构中的差异节点。
在本实施例中,在生成了上述第一树状结构和上述第二树状结构的情况下,可以将该第一树状结构和该第二树状结构进行比较,以确定该第一树状结构和该第二树状结构中存在差异的节点,这类节点可以被称为差异节点。
需要说明的是,上述第一树状结构和上述第二树状结构中的差异节点,可以是处于相同的位置上但包含的内容(例如:单元数据、单元数据在内存数组中的索引)不同的节点,也可以是包含的内容相同但处于不同的位置上的节点,还可以是包含的内容不同且处于不同的位置上的节点。
在实际的应用中,可以预先设置过滤器,从而可以在确定上述第一树状结构和上述第二树状结构中的差异节点时,过滤掉可忽略的差异节点。
请参考图2和图3,图2是本申请一示例性实施例示出的一种树状结构的示意图,图3是本申请一示例性实施例示出的另一种树状结构的示意图。
如图2和图3所示,在树状结构中,圆形表示节点,而圆形内的数字则表示节点包含的内容。对于如图2所示的树状结构1和如图3所示的树状结构2而言,树状结构1中的节点5和树状结构2中的节点7为处于相同的位置上但包含的内容不同的节点,树状结构1中的节点6和树状结构2中的节点6为包含的内容相同但处于不同的位置上的节点,树状结构中的节点8为包含的内容不同且处于不同的位置上的节点。也即,树状结构1中的节点5和节点6,以及树状结构2中的节点6、节点7和节点8,均为树状结构1和树状结构2中的差异节点。
在一些实施例中,在将上述第一树状结构和上述第二树状结构进行比较时,以确定该第一树状结构和该第二树状结构中的差异节点时,具体可以将该第一树状结构与该第二树状结构进行比较,以确定该第一树状结构和该第二树状结构中的差异节点,并将确定出的差异节点写入至一个内存数组(可称为第三内存数组)。
如前所述,上述第一树状结构中的一个节点可以包含上述第一WebAssembly二进制文件中的一个单元数据和这个单元数据在上述第一内存数组中的索引,上述第二树状结构中的一个节点可以包含上述第二WebAssembly二进制文件中的一个单元数据和这个单元数据在上述第二内存数组中的索引。因此,上述第三内存数组中可以存储该第一树状结构中的差异节点包含的单元数据和索引,以及该第二树状结构中的差异节点包含的单元数据和索引。
步骤104:在可视化界面中,针对所述第一树状结构、所述第二树状结构和所述差异节点进行输出。
在本实施例中,在生成了上述第一树状结构和上述第二树状结构,并且确定了该第一树状结构和该第二树状结构中的差异节点的情况下,可以在上述电子设备面向用户提供的可视化界面中,针对该第一树状结构、该第二树状结构和确定出的差异节点进行输出。由此,即可面向用户提供针对WebAssembly二进制文件的较为直观的阅读和比较。
例如,可以在上述可视化界面中,将上述第一树状结构显示在左侧,并将上述第二树状结构显示在右侧,以针对该第一树状结构和该第二树状结构进行对比输出。此外,可以将该第一树状结构和该第二树状结构中的差异节点,以文字形式进行输出。
在一些实施例中,在上述可视化界面中,针对上述第一树状结构、上述第二树状结构和上述差异节点进行输出时,具体可以在该可视化界面中,针对该第一树状结构和该第二树状结构进行输出,并在输出的该第一树状结构和该第二树状结构中,针对这些差异节点进行增强输出。其中,增强输出可以是以标红方式显示或以高亮方式显示等。
请参考图4,图4是本申请一示例性实施例示出的一种可视化界面的示意图。
如图4所示,可以在上述可视化界面中,将上述第一树状结构显示在左侧,并将上述第二树状结构显示在右侧,以针对该第一树状结构和该第二树状结构进行对比输出。此外,由于该第一树状结构中的节点5和节点6,以及该第二树状结构中的节点6、节点7和节点8,均为该第一树状结构和该第二树状结构中的差异节点,可以将这些差异节点包含的内容的显示文本加粗,并将显示背景调整为深色(图中未示出),以针对这些差异节点进行增强输出。
在一些实施例中,还可以统计上述第一树状结构和上述第二树状结构中的差异节点的数量,并在上述可视化界面中,针对统计出的差异节点的数量进行输出。
例如,可以在上述可视化界面中,将上述第一树状结构和上述第二树状结构中的差异节点的数量,以文字形式进行输出。
在实际的应用中,可以分别统计上述第一树状结构中的上述差异节点的数量,以及上述第二树状结构中的上述差异节点的数量,也可以共同统计该第一树状结构和该第二树状结构中的差异节点的数量。
在一些实施例中,在上述可视化界面中,针对上述差异节点的数量进行输出时,具体可以在该可视化界面中,针对该差异节点的数量进行增强输出。其中,增强输出可以是以标红方式显示或以高亮方式显示等。
请继续参考图4,如图4所示,可以在上述可视化界面中,将上述第一树状结构中的上述差异节点的数量的显示背景调整为深色,并将上述第二树状结构中的上述差异节点的数量的显示文本加粗,并将显示背景调整为深色(图中未示出),以进行增强输出。
在上述技术方案中,可以基于WebAssembly虚拟机规范,分别对待比较的第一WebAssembly二进制文件和第二WebAssembly二进制文件进行解析,以生成与该第一WebAssembly二进制文件对应的第一树状结构,以及与该第二WebAssembly二进制文件对应的第二树状结构,后续可以将该第一树状结构与该第二树状结构进行比较,以确定该第一树状结构和该第二树状结构中的差异节点,从而可以在可视化界面中,针对该第一树状结构、该第二树状结构和其中的差异节点进行输出。
采用上述方式,通过在可视化界面中,针对与不同的WebAssembly二进制文件对应的树状结构和其中的差异节点进行输出,可以实现针对WebAssembly二进制文件的较为直观的阅读,并且实现针对不同的比较WebAssembly二进制文件的较为直观的比较。
与前述数据处理方法的实施例相对应,本申请还提供了数据处理装置的实施例。
请参考图5,图5是本申请一示例性实施例示出的一种设备的结构示意图。在硬件层面,该设备包括处理器501、内部总线502、网络接口503、内存504以及非易失性存储器505,当然还可能包括所需要的其他硬件。本申请一个或多个实施例可以基于软件方式来实现,比如由处理器501从非易失性存储器505中读取对应的计算机程序到内存504中然后运行。当然,除了软件实现方式之外,本申请一个或多个实施例并不排除其他实现方式,比如逻辑器件或者软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑模块,也可以是硬件或者逻辑器件。
请参考图6,图6是本申请一示例性实施例示出的一种数据处理装置的框图。
上述数据处理装置可以应用于图5所示的设备,以实现本申请的技术方案。其中,该数据处理装置可以包括:
获取单元601,用于获取待比较的第一WebAssembly二进制文件和第二WebAssembly二进制文件;
解析单元602,用于基于WebAssembly虚拟机规范,分别对所述第一WebAssembly二进制文件和所述第二WebAssembly二进制文件进行解析,以生成与所述第一WebAssembly二进制文件对应的第一树状结构,以及与所述第二WebAssembly二进制文件对应的第二树状结构;其中,树状结构中的节点包含WebAssembly二进制文件中的单元数据;
比较单元603,用于将所述第一树状结构与所述第二树状结构进行比较,以确定所述第一树状结构和所述第二树状结构中的差异节点;
输出单元604,用于在可视化界面中,针对所述第一树状结构、所述第二树状结构和所述差异节点进行输出。
可选地,所述获取单元601具体用于:
获取与待比较的第一WebAssembly二进制文件对应的第一存储路径,以及与待比较的第二WebAssembly二进制文件对应的第二存储路径;
基于所述第一存储路径,以二进制方式读取所述第一WebAssembly二进制文件,并基于所述第二存储路径,以二进制方式读取所述第二WebAssembly二进制文件。
可选地,所述获取单元601具体用于:
基于所述第一存储路径,以二进制方式读取所述第一WebAssembly二进制文件,并将读取到的所述第一WebAssembly二进制文件写入至第一内存数组;以及,基于所述第二存储路径,以二进制方式读取所述第二WebAssembly二进制文件,并将读取到的所述第二WebAssembly二进制文件写入至第二内存数组。
可选地,树状结构中的节点包含WebAssembly二进制文件中的单元数据及其在内存数组中的索引。
可选地,所述比较单元603具体用于:
将所述第一树状结构与所述第二树状结构进行比较,以确定所述第一树状结构和所述第二树状结构中的差异节点,并将所述差异节点写入至第三内存数组。
可选地,所述输出单元604具体用于:
在可视化界面中,针对所述第一树状结构和所述第二树状结构进行输出,并在输出的所述第一树状结构和所述第二树状结构中,针对所述差异节点进行增强输出。
可选地,所述装置还包括:
统计单元,用于统计所述差异节点的数量,并在所述可视化界面中,针对所述差异节点的数量进行输出。
可选地,所述统计单元具体用于:
在所述可视化界面中,针对所述差异节点的数量进行增强输出。
对于装置实施例而言,其基本对应于方法实施例,因此相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请的技术方案的目的。
上述实施例阐明的系统、装置、模块或者单元,具体可以由计算机芯片或者实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或者闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或者技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或者其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或者其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或者其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或者其他磁性存储设备或者任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确存储的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本申请特定实施例进行了描述。其他实施例在本申请的范围内。在一些情况下,在本申请中记载的动作或者步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本申请一个或多个实施例中所使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请一个或多个实施例。单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。术语“和/或”是指并包含一个或多个相关联的存储项目的任何或者所有可能组合。
在本申请一个或多个实施例中所使用的术语“一个实施例”、“一些实施例”、“示例”、“具体示例”或者“一种实施方式”等的描述意指结合该实施例所描述的具体特征或者特点包含于本申请的至少一个实施例中。对这些术语的示意性描述不必须针对相同的实施例。而且,所描述的具体特征或者特点可以在本申请一个或多个实施例中以合适的方式结合。此外,在不相互矛盾的情况下,可以将不同的实施例以及不同实施例中的具体特征或者特点进行结合。
应当理解,尽管在本申请一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或者“当……时”或者“响应于确定”。
以上所述仅为本申请一个或多个实施例的较佳实施例而已,并不用以限制本申请一个或多个实施例,凡在本申请一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请一个或多个实施例保护的范围之内。

Claims (11)

1.一种数据处理方法,其特征在于,所述方法包括:
获取待比较的第一WebAssembly二进制文件和第二WebAssembly二进制文件;
基于WebAssembly虚拟机规范,分别对所述第一WebAssembly二进制文件和所述第二WebAssembly二进制文件进行解析,以生成与所述第一WebAssembly二进制文件对应的第一树状结构,以及与所述第二WebAssembly二进制文件对应的第二树状结构;其中,树状结构中的节点包含WebAssembly二进制文件中的单元数据;
将所述第一树状结构与所述第二树状结构进行比较,以确定所述第一树状结构和所述第二树状结构中的差异节点;
在可视化界面中,针对所述第一树状结构、所述第二树状结构和所述差异节点进行输出。
2.根据权利要求1所述的方法,其特征在于,所述获取待比较的第一WebAssembly二进制文件和第二WebAssembly二进制文件,包括:
获取与待比较的第一WebAssembly二进制文件对应的第一存储路径,以及与待比较的第二WebAssembly二进制文件对应的第二存储路径;
基于所述第一存储路径,以二进制方式读取所述第一WebAssembly二进制文件,并基于所述第二存储路径,以二进制方式读取所述第二WebAssembly二进制文件。
3.根据权利要求2所述的方法,其特征在于,所述基于所述第一存储路径,以二进制方式读取所述第一WebAssembly二进制文件,并基于所述第二存储路径,以二进制方式读取所述第二WebAssembly二进制文件,包括:
基于所述第一存储路径,以二进制方式读取所述第一WebAssembly二进制文件,并将读取到的所述第一WebAssembly二进制文件写入至第一内存数组;以及,基于所述第二存储路径,以二进制方式读取所述第二WebAssembly二进制文件,并将读取到的所述第二WebAssembly二进制文件写入至第二内存数组。
4.根据权利要求3所述的方法,其特征在于,树状结构中的节点包含WebAssembly二进制文件中的单元数据及其在内存数组中的索引。
5.根据权利要求3所述的方法,其特征在于,所述将所述第一树状结构与所述第二树状结构进行比较,以确定所述第一树状结构和所述第二树状结构中的差异节点,包括:
将所述第一树状结构与所述第二树状结构进行比较,以确定所述第一树状结构和所述第二树状结构中的差异节点,并将所述差异节点写入至第三内存数组。
6.根据权利要求1所述的方法,其特征在于,所述在可视化界面中,针对所述第一树状结构、所述第二树状结构和所述差异节点进行输出,包括:
在可视化界面中,针对所述第一树状结构和所述第二树状结构进行输出,并在输出的所述第一树状结构和所述第二树状结构中,针对所述差异节点进行增强输出。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
统计所述差异节点的数量,并在所述可视化界面中,针对所述差异节点的数量进行输出。
8.根据权利要求7所述的方法,其特征在于,所述在所述可视化界面中,针对所述差异节点的数量进行输出,包括:
在所述可视化界面中,针对所述差异节点的数量进行增强输出。
9.一种数据处理装置,其特征在于,所述装置包括:
获取单元,用于获取待比较的第一WebAssembly二进制文件和第二WebAssembly二进制文件;
解析单元,用于基于WebAssembly虚拟机规范,分别对所述第一WebAssembly二进制文件和所述第二WebAssembly二进制文件进行解析,以生成与所述第一WebAssembly二进制文件对应的第一树状结构,以及与所述第二WebAssembly二进制文件对应的第二树状结构;其中,树状结构中的节点包含WebAssembly二进制文件中的单元数据;
比较单元,用于将所述第一树状结构与所述第二树状结构进行比较,以确定所述第一树状结构和所述第二树状结构中的差异节点;
输出单元,用于在可视化界面中,针对所述第一树状结构、所述第二树状结构和所述差异节点进行输出。
10.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1至8中任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1至8中任一项所述的方法。
CN202311206331.6A 2023-09-18 2023-09-18 数据处理方法和装置 Pending CN116932149A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311206331.6A CN116932149A (zh) 2023-09-18 2023-09-18 数据处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311206331.6A CN116932149A (zh) 2023-09-18 2023-09-18 数据处理方法和装置

Publications (1)

Publication Number Publication Date
CN116932149A true CN116932149A (zh) 2023-10-24

Family

ID=88392699

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311206331.6A Pending CN116932149A (zh) 2023-09-18 2023-09-18 数据处理方法和装置

Country Status (1)

Country Link
CN (1) CN116932149A (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0003250D0 (en) * 1999-02-12 2000-04-05 Nec Corp Method and apparatus for outputting the difference between tree structure data
US9483387B1 (en) * 2014-03-17 2016-11-01 Amazon Technologies, Inc. Tree comparison functionality for services
CN111090417A (zh) * 2019-11-14 2020-05-01 杭州中恒电气股份有限公司 二进制文件解析方法、装置、设备及介质
CN112365944A (zh) * 2020-10-23 2021-02-12 零氪科技(北京)有限公司 一种树状数据节点处理系统、方法、电子设备及存储介质
CN115048623A (zh) * 2022-04-01 2022-09-13 上海任意门科技有限公司 用于加密代码的方法、计算设备和存储介质
CN116700629A (zh) * 2023-08-01 2023-09-05 北京中电华大电子设计有限责任公司 数据处理方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0003250D0 (en) * 1999-02-12 2000-04-05 Nec Corp Method and apparatus for outputting the difference between tree structure data
US9483387B1 (en) * 2014-03-17 2016-11-01 Amazon Technologies, Inc. Tree comparison functionality for services
CN111090417A (zh) * 2019-11-14 2020-05-01 杭州中恒电气股份有限公司 二进制文件解析方法、装置、设备及介质
CN112365944A (zh) * 2020-10-23 2021-02-12 零氪科技(北京)有限公司 一种树状数据节点处理系统、方法、电子设备及存储介质
CN115048623A (zh) * 2022-04-01 2022-09-13 上海任意门科技有限公司 用于加密代码的方法、计算设备和存储介质
CN116700629A (zh) * 2023-08-01 2023-09-05 北京中电华大电子设计有限责任公司 数据处理方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
""https://developer.mozilla.org/zh-CN/docs/WebAssembly/Understanding_the_text_format"", pages 1 - 2 *

Similar Documents

Publication Publication Date Title
CN109976761B (zh) 软件开发工具包的生成方法、装置及终端设备
CN110162296B (zh) 应用程序编程接口文档的生成方法、装置及终端设备
CN110007920B (zh) 一种获取代码依赖关系的方法、装置及电子设备
CN111324396B (zh) 一种区块链智能合约执行方法、装置及设备
WO2024045382A1 (zh) 区块链中实现反射机制
Price C# 8.0 and. NET Core 3.0–Modern Cross-Platform Development: Build applications with C#,. NET Core, Entity Framework Core, ASP. NET Core, and ML. NET using Visual Studio Code
CN108052327A (zh) 一种内核模块编译、加载方法及装置
CN116680015B (zh) 函数调用方法、装置、电子设备及可读存储介质
CN111090425B (zh) 一种程序封装方法、装置及电子设备
CN116700629B (zh) 数据处理方法和装置
CN116680014B (zh) 数据处理方法和装置
CN117032719A (zh) 针对TypeScript的静态编译方法及装置
CN109409037B (zh) 一种数据混淆规则的生成方法、装置及设备
CN116932149A (zh) 数据处理方法和装置
CN116955209B (zh) WebAssembly虚拟机的测试方法和装置
CN116414689A (zh) 一种基于反射机制的接口参数校验方法及系统
Levin et al. owlcpp: a C++ library for working with OWL ontologies
WO2009020567A2 (en) Method and system for generating an application
CN110764777B (zh) 一种elf文件生成方法、elf文件、设备及存储介质
CN114625372A (zh) 组件自动编译方法、装置、计算机设备及存储介质
CN116700840B (zh) 文件执行方法、装置、电子设备及可读存储介质
CN115516440A (zh) 使用具有索引的边界数据结构
CN112486465A (zh) 一种代码更新方法及装置
CN117251234B (zh) 基于补丁的函数调用方法及装置
CN116700841B (zh) 一种原生api调用的方法及装置

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