CN110352400B - 用于处理报文的方法和装置 - Google Patents

用于处理报文的方法和装置 Download PDF

Info

Publication number
CN110352400B
CN110352400B CN201780087658.2A CN201780087658A CN110352400B CN 110352400 B CN110352400 B CN 110352400B CN 201780087658 A CN201780087658 A CN 201780087658A CN 110352400 B CN110352400 B CN 110352400B
Authority
CN
China
Prior art keywords
processor
binary file
virtual machine
message
generate
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
Application number
CN201780087658.2A
Other languages
English (en)
Other versions
CN110352400A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN110352400A publication Critical patent/CN110352400A/zh
Application granted granted Critical
Publication of CN110352400B publication Critical patent/CN110352400B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本申请实施例提供一种用于处理报文的方法和装置,该方法具有灵活性以及兼容性,有利于在处理器上加载定义报文处理操作的二进制文件,从而有利于处理器进行报文处理。该方法包括:第一处理器编译高级编程语言描述的源代码生成能够被虚拟机执行的目标代码,该源代码定义了报文处理操作;该第一处理器转换该目标代码生成二进制文件;加载了该二进制文件的第二处理器根据该报文处理操作,对报文进行处理。

Description

用于处理报文的方法和装置
技术领域
本申请涉及网络技术领域,并且更具体地,涉及一种用于处理报文的方法和装置。
背景技术
使能处理器执行某个处理操作,需要在处理器上加载定义该处理操作的二进制文件。例如,处理器可以对报文进行丢弃、修改或者转发。不同类型的处理器对应的指令集不同,即不同类型的处理器能够识别的代码不同。也就是说,为使得不同的处理器能够执行同一个处理操作,在不同处理器上加载的二进制文件是不同的。
现有技术中,在不同类型的处理器上加载的二进制文件是通过编译不同的编程语言描述的源代码生成的。也就是说,在不同类型的处理器上加载的二进制文件与源代码的编程语言具有对应关系,也就是说,处理器与源代码的编程语言具有对应关系。例如,在网络处理器(Network Processor,NP)上加载的二进制文件是通过编译汇编语言(AssemblyLanguage,AL)描述的源代码生成的。即NP对应的源代码的编程语言为AL。又例如,在现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)上加载的二进制文件是通过编译硬件描述语言(Hardware Description Language,HDL)描述的源代码生成的。即FPGA对应的源代码的编程语言为HDL。
编译处理器对应的编程语言描述的源代码生成在该处理器上加载的二进制文件的技术方案不够灵活,成本比较高。
发明内容
本申请实施例提供一种用于处理报文的方法和装置,编译高级编程语言描述的源代码生成能够被虚拟机执行的目标代码,在处理器上加载的二进制文件是通过转换该目标代码生成的,能够实现高级编程语言描述的源代码到在处理器上加载的二进制文件的转化。该方案具有较高的灵活性。
第一方面,提供一种用于处理报文的方法,该方法包括:第一处理器编译高级编程语言描述的源代码生成能够被虚拟机执行的目标代码,所述源代码定义了报文处理操作;所述第一处理器转换所述目标代码生成二进制文件;加载了所述二进制文件的第二处理器根据所述报文处理操作,对报文进行处理。
在现有技术中,待加载的二进制文件是通过编译处理器对应的编程语言描述的源代码生成的。其中,该源代码的编程语言与处理器的类型相关。对于不同类型的处理器,用户需要使用不同的编程语言描述源代码。而在本申请中,目标代码介于高级编程语言描述的源代码和加载在处理器上的二进制文件之间,用于实现高级编程语言描述的源代码到加载在处理器上的二进制文件的转化。程序员可以使用高级编程语言描述源代码。程序员不需要使用与处理器的类型对应的编程语言。因此,该方案具有较高的灵活性。另外,所述第一处理器可以将所述目标代码转换为不同的二进制文件,并分别将不同的二进制文件加载到不同的第二处理器中。也就是说,上述方案有助于根据高级编程语言描述的源代码生成不同处理器的二进制文件,有助于降低开发成本。
可选地,在第一方面可能的实现方式中,第一处理器为通用处理器,第二处理器为通用处理器和专用处理器中的至少一种。
应理解,若第一处理器和第二处理器均为通用处理器,该第一处理器和第二处理器可以为同一个处理器也可以为不同的处理器。
可选地,在第一方面可能的实现方式中,第二处理器包括可重配的逻辑设备、NP、CPU以及多核系统级芯片Soc中的至少一种。
可选地,在第一方面可能的实现方式中,可重配的逻辑设备包括现场可编程逻辑门阵列FPGA以及复杂可编程逻辑器件CPLD。
可选地,在第一方面可能的实现方式中,该高级编程语言包括Java、C++、C、pascal、Python、Lisp,Prolog或FoxPro。
高级编程语言包括的语言种类多,用户可以灵活地选择相应语言进行源代码的描述,有利于在第二处理器上加载二进制文件,从而有利于第二处理器进行报文处理。
在第一方面可能的实现方式中,所述报文处理操作用于处理数据通信网络的L2层业务、数据通信网络的L3层业务、数据通信网络的L4层业务、数据通信网络的L5层业务、数据通信网络的L6层业务和数据通信网络的L7层业务中的至少一种。
该方案中,用户可以在第二处理器上加载定义相应报文处理器操作的二进制文件,以满足用户通过第二处理器进行报文处理的需求。
在第一方面可能的实现方式中,所述虚拟机为Java虚拟机,所述目标代码中的指令为Java虚拟机指令集中的指令;或者所述虚拟机为伯克利报文过滤器BPF虚拟机,所述目标代码中的指令为BPF虚拟机指令集中的指令;或者所述虚拟机为扩展的伯克利报文过滤器eBPF虚拟机,所述目标代码中的指令为eBPF虚拟机指令集中的指令。
在该方案中,虚拟机具有自己的指令集,有利于目标代码准确地转化成为加载在第二处理器上的二进制文件。
在第一方面可能的实现方式中,所述第一处理器转换所述目标代码生成二进制文件,包括:所述第一处理器对所述目标代码进行反汇编,生成AL描述的计算机程序;所述第一处理器根据所述AL描述的计算机程序,生成所述二进制文件。
应理解,对于不同的设备,AL对应不同的指令集。即,对于同一个处理操作,不同的设备对应的AL不同,也就是说,AL和设备具有对应关系。该通过对目标代码进行反汇编生成的AL为虚拟机对应的AL。该方案有利于将该目标代码转化为二进制文件。
在第一方面可能的实现方式中,所述AL为第一AL;所述第一处理器根据所述AL描述的计算机程序,生成所述二进制文件,包括:所述第一处理器将所述第一AL描述的计算机程序转换为第二AL描述的计算机程序;所述第一处理器对所述第二AL描述的计算机程序进行汇编,生成所述二进制文件。
该第一AL为虚拟机对应的AL,该第二AL为第二处理器对应的AL。该方案操作简单易于实现,有利于将目标代码转化为在第二处理器上加载的二进制文件。进一步地,该第二处理器可以为NP或中央处理器CPU。
在第一方面可能的实现方式中,所述第一处理器转换所述目标代码生成二进制文件之后,以及所述加载了所述二进制文件的第二处理器根据所述报文处理操作,对报文进行处理之前,所述方法还包括:将所述二进制文件保存到指令存储器中,所述第二处理器与所述指令存储器耦合;所述加载了所述二进制文件的第二处理器根据所述报文处理操作,对报文进行处理包括:所述第二处理器通过访问所述指令存储器获取所述二进制文件;所述第二处理器通过执行所述二进制文件中的指令序列,对所述报文进行处理。
在第一方面可能的实现方式中,所述第一处理器根据所述AL描述的计算机程序,生成所述二进制文件,包括:所述第一处理器将所述AL描述的计算机程序转换为HDL描述的代码;所述第一处理器对所述HDL描述的代码进行综合,生成门级描述;所述第一处理器对所述门级描述进行转换,生成所述二进制文件。
该方案操作简单易于实现,有利于将目标代码转化为在第二处理器上加载的二进制文件。进一步地,若该第二处理器可以为可重配的逻辑设备。
可选地,在第一方面可能的实现方式中,该HDL可以包括:超高速集成电路硬件描述语言VHDL或Verilog语言。
可选地,该门级描述可以包括电子设计交换格式EDIF网表(netlist)。
在第一方面可能的实现方式中,所述第一处理器转换所述目标代码生成二进制文件之后,以及所述加载了所述二进制文件的第二处理器根据所述报文处理操作,对报文进行处理之前,所述方法还包括:经由所述第二处理器的联合测试行为组织JTAG接口,将所述二进制文件加载到所述第二处理器,所述处理器为可重配的逻辑设备,所述二进制文件为比特配置文件。
可选地,在第一方面可能的实现方式中,所述可重配的逻辑设备包括FPGA,该比特配置文件具体为比特流文件(bitstream file)。例如,一个比特流文件可以表示为:*.bit。
可选地,在第一方面可能的实现方式中,所述可重配的逻辑设备包括CPLD,该比特配置文件具体为固态技术协会是微电子产业的领导标准机构JEDEC文件。例如,一个JEDEC文件可以表示为:*.jed。
在第一方面可能的实现方式中,所述第二处理器用于网络功能虚拟化NFV加速。
例如,该第二处理器可以为硬件加速器,采用本申请实施例的方法,用户可以根据需要灵活地在硬件加速器上加载二进制文件,以用于使该硬件加速器执行相应的操作,有利于提高NFV处理业务的效率,该方法灵活性高,可操作性强。
可选地,该硬件加速器的加速单元芯片可以包括嵌入式神经网络处理器NPU芯片、FPGA以及Soc中的至少一种。
第二方面,提供一种用于处理报文的装置,用于执行第一方面或第一方任意的可能实现方式中的方法,具体地,该装置可以包括用于执行第一方面或第一方面任意可能的实现方式中的方法的单元。
第三方面,提供一种用于处理报文的设备,该设备包括处理器,该处理器被配置为支持该设备执行上述方法中相应的功能。该设备还可以包括存储器,该存储器与处理器耦合,该存储器保存该设备必要的程序指令和数据。
第四方面,提供了一种计算机可读介质,用于储存为上述第一处理器和/或第二处理器所用的计算机软件指令,其包含用于执行上述方面所设计的程序。
第五方面,提供一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码被用于报文处理的装置的第一处理单元和/或第二处理单元运行时,使得该装置执行上述实现方式中的方法;或当所述计算机程序代码被用于报文处理的设备的第一处理器和/或第二处理器运行时,使得该设备执行上述实现方式中的方法。
基于以上技术方案,本申请实施例提供的用于处理报文的方法、装置和设备,通过高级编程语言描述的源代码到目标代码的转化,进而从目标代码到二进制文件的转换,该方案具有较高的灵活性以及兼容性,有利于在处理器上加载二进制文件,有利于使能处理器进行报文处理。
附图说明
图1是根据本申请实施例用于处理报文的方法的一例的示意性流程图。
图2是根据本申请实施例用于处理报文的方法的另一例的示意性流程图。
图3是根据本申请实施例的用于处理报文的方法的又一例的示意性流程图。
图4是根据本申请实施例的用于处理报文的装置的示意性框图。
图5是根据本申请实施例的用于处理报文的设备的示意性框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应理解,本申请实施例中的方式的划分仅是为了描述的方便,不应构成特别的限定,各种方式中的特征在不矛盾的情况下可以相结合。
还应理解,申请实施例中的“第一”以及“第二”仅为了区分,不应对本申请构成任何限定。
现有技术中,使能处理器执行某个处理操作,用户需要使用该处理器对应的编程语言描述定义该处理操作的源代码,编译该源代码生成(能够)在该处理器上加载的二进制文件,加载了该二进制文件的处理器能够根据该处理操作进行相应处理,该方法不利于在处理器上加载二进制文件,从而不利于处理器进行相应处理。
首先,该方法具有局限性。
具体地,在该方法中,处理器与描述源代码的编程语言具有对应关系,导致通过某种编程语言描述的源代码只能加载在某些特定类型的处理器上。
例如,使能FPGA执行处理操作A,用户需要使用HDL(例如,Verilog语言)描述定义该处理操作A的源代码,为了便于说明,将“HDL描述的定义该处理操作A的源代码”记为“源代码CA(HDL)”编译该源代码CA(HDL)能够生成在FPGA上加载的二进制文件CFPGA-A。但是,该源代码CA(HDL)无法转换为在NP上加载的二进制文件CNP-A。同理,NP对应的AL描述的源代码CA(AL)能够转换为二进制文件CNP-A但是无法转换为CNP-A。该方法具有局限性。
进一步地,若多种类型的处理器有执行同一个处理操作的需求,用户需要使用多种编程语言一一对应描述多种源代码。例如,假设使能FPGA和NP执行处理操作A,用户需要使用分别描述源代码CA(HDL)以及源代码CA(AL),该方法会导致人力资源浪费。
需要说明是,在处理器上加载的二进制文件可以理解为:该处理器能够识别该二进制文件,该处理器获取该二进制文件之后,能够执行该二进制文件定义的处理操作。
其次,该方法对开发环境要求较高。
通常情况下,源代码的开发环境与处理器相关。例如,假设处理器为赛灵思(Xilinx)公司生产的FPGA,该源代码的开发环境为ISE开发环境。具体地,用户需要在ISE开发环境下使用Verilog语言描述源代码(即使用ISE软件通过Verilog语言描述源代码)。又例如,假设处理器为拓朗半导体(Altera)公司生产的FPGA,用户需要在quartus开发环境下使用Verilog语言描述源代码,该方法对开发环境要求较高。
进一步地,该方式对用户的专业能力要求较高。
例如,FPGA需要具有逻辑电路开发能力的专业开发人员进行Verilog代码的描述。通常情况下,用户不具有逻辑电路开发能力,从而不利于在处理器上加载二进制文件。
通过以上分析可以发现,现有技术中在处理器上加载二进制文件的方法存在局限性、开发环境要求高以及专业性强等缺点,不利于在处理器上加载二进制文件,从而不利于处理器对数据进行处理。
因此,本申请实施例提供一种用于处理报文的方法,该方法有利于在处理器上加载二进制文件,从而有利于处理器根据该二进制文件定义的处理操作对报文进行处理。
为便于理解本申请实施例,在描述本申请实施例的用于处理报文的方法之前,首先对本申请实施例涉及到的相关概念作简单介绍。
高级编程语言,是以人类的日常语言为基础的一种编程语言,使用一般人易于接受的文字来表示(例如汉字、不规则英文或其他外语),从而使描述更容易,亦有较高的可读性。Java、C++、C、pascal、Python、Lisp,Prolog,FoxPro等都属于高级编程语言。
汇编语言AL,是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令,特定的汇编语言和特定的机器语言指令集是一一对应的。也就是说,不同的设备对应不同的汇编语言。
源代码(Source Code),是指未编译的按照一定的业务设计语言规范描述的文本文件,是一系列人类可读的计算机语言指令。源代码(或源程序)不能直接被机器(例如,计算机)识别,需要经过编译生成的二进制文件,二进制文件可以能被机器识别。
需要说明是的,在本申请中,将开发人员(或用户)通过编程语言描述的代码记为“源代码”。
编译(Compilation),是指在应用源代码执行之前,将一种语言“翻译”成另外一种语言的过程。例如,将高级编程语言(源代码)翻译成计算机可以识别的机器语言(目标代码)。
目标代码(Object Code),指计算机科学中编译器或汇编器处理源代码后所生成的代码,它一般由机器代码或接近于机器语言的代码组成。
二进制文件(Binaries),也叫“目标文件(Object File)”是用于记录目标代码的文件。二进制文件包含着目标代码以及代码在运行时使用的数据,如重定位信息,如用于链接或调试的业务符号(变量和函数的名字),此外还包括其他调试信息。
二进制文件是机器(应理解,该机器可以是实体机器也可以是虚拟机)可以识别的文件。通过编译源代码生成对应的二进制文件。例如,编译Verilog语言描述的源代码生成在FPGA上加载的二进制文件。编译NP对应的AL描述的源代码生成在NP上加载的二进制文件。
以下,结合图1、图2和图3,详细说明根据本申请实施例用于处理报文的方法的详细过程。
图1是根据本申请实施例的用于处理报文的方法100的示意性流程图。应理解,图1示出了用于处理报文的方法的详细的步骤或操作,但这些步骤或操作仅是示例,本申请实施例还可以执行其它操作或者图1中的各种操作的变形。
如图1所示,该方法100涉及第一处理器和第二处理器。
在这里,该第一处理器可以理解为能够将高级编程语言描述的源代码转换为二进制文件的处理器。该第二处理器可以理解为使能执行该二进制文件定义的报文处理操作的处理器(即待加载二进制文件的处理器)。
具体地,该第一处理器为通用处理器。其中,对于通用处理器并没有严格的定义,目前最广泛的概念是“通用处理器是图灵完备的”,也就是说,通用处理器计算能力与一个通用图灵机相当,能计算出图灵可计算函数的结果(一切可计算的问题都能计算)。
第二处理器可以为通用处理器也可以为专用处理器。其中,专用处理器(或者协处理器)在计算一些特定任务时很快,但是无法计算其之外的其它应用。例如,本申请实施例的NP就是一种专用处理器。可选地,该第二处理器可以包括可重配的逻辑设备、CPU、NP以及多核系统级芯片(System on Chip,Soc)中的至少一种。其中,该可重配的逻辑设备可以包括FPGA、复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)中的至少一种。
若第一处理器和第二处理器均为通用处理器,该第一处理器和第二处理器可以为同一个处理器也可以为不同的处理器。
例如,第一处理器和第二处理器为同一个中央处理器(Central ProcessingUnit,CPU),该CPU生成二进制文件,该CPU加载该二进制文件并根据该二进制文件定义的报文处理操作,对报文进行处理。
又例如,该第一处理器为第一CPU,该第二处理器为第二CPU,该第一CPU和第二CPU不同。
该第一处理器和第二处理器还可以为不同的处理器。例如,第一处理器为CPU,第二处理器为NP,该CPU生成二进制文件,该NP加载该CPU生成的二进制文件,该NP根据该二进制文件定义的报文处理操作,对报文进行处理。
具体地,该方法100可以包括S110、S120以及S130。
S110、第一处理器编译高级编程语言描述的源代码生成能够被虚拟机执行的目标代码,所述源代码定义了报文处理操作。
其中,虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整系统。虚拟机的虚拟系统通过生成现有操作系统的全新虚拟镜像,它具有windows操作系统、linux操作系统或其他操作系统完全一样的功能,进入虚拟系统后,所有操作都是在这个全新的独立的虚拟系统里面进行,可以独立安装运行软件,保存数据,拥有自己的独立桌面,不会对真正的系统产生任何影响,而且具有能够在现有系统与虚拟镜像之间灵活切换的一类操作系统。
可选地,该虚拟机可以包括多种类型的虚拟机,
例如,所述虚拟机可以为Java虚拟机,所述目标代码中的指令为Java虚拟机指令集中的指令。
又例如,所述虚拟机可以为伯克利报文过滤器(Berkeley Packet Filter,BPF)虚拟机,所述目标代码中的指令为BPF虚拟机指令集中的指令。
再例如,所述虚拟机可以为扩展的伯克利报文过滤器(Extend Berkeley PacketFilter,eBPF)虚拟机,所述目标代码中的指令为eBPF虚拟机指令集中的指令。该虚拟机可以是微软虚拟机、Linux虚拟机等其他类型的虚拟机。
其中,Java虚拟机、BPF虚拟机以及eBPF虚拟机具有指令集,有利于后续转换目标代码生成二进制文件。
可选地,该报文处理操作可以是对报文执行转发操作,对报文执行修改操作,计算校验和(英文:checksum),对生存时间的值减一,对报文执行计数操作,对报文执行服务质量(英文:quality of service,简称:QoS)操作,或者对报文执行访问控制操作以及对报文执行丢弃操作。
举例来说,所述转发操作可以是三层虚拟专用网(英文:layer 3virtual privatenetwork,简称:L3VPN)转发,二层虚拟专用网(英文:layer 2virtual private network,简称:L2VPN)转发,虚拟专用局域网业务(英文:virtual private LAN service,简称:VPLS)转发,多协议标签交换(英文:multiprotocol label switching,简称:MPLS)转发,IP转发或者二层交换(英文:layer 2switching)。
应理解,不同的处理操作通过不同的源代码进行定义。例如,假设定义报文处理操作A的源代码和定义报文处理操作B的源代码均通过高级编程语言描述,该定义报文处理操作A的源代码与定义报文处理操作B的源代码不同。
还应理解,源代码、编译该源代码生成的目标代码以及下文描述的转换该目标代码生成的二进制文件,三者定义的报文处理相同。例如,使能第二处理器执行报文处理操作A,高级语言编写的源代码定义该报文处理操作A,编译该源代码生成目标代码,该目标代码定义该报文处理操作A,以及转换该目标代码生成二进制文件,该二进制文件定义该报文处理操作A。
以下,为了便于说明,将“高级编程语言描述的源代码”记为“源代码CC”,将“能够被虚拟机执行的目标代码”记为“目标代码CVIR”。
该目标代码CVIR与第二处理器无关。其中,该“该目标代码CVIR与第二处理器无关”可以理解为:不论第二处理器为何种类型的处理器,在第二处理器上加载的二进制文件均能够通过转换该目标代码CVIR生成。
进一步地,在本申请实施例中,该S110可以包括:
提前(Ahead Of Time,AOT)编译(例如,静态编译)所述源代码CC,生成所述目标代码CVIR
S120、所述第一处理器转换所述目标代码生成二进制文件。
S130、加载了所述二进制文件的第二处理器根据所述报文处理操作,对报文进行处理。
应理解,“所述第一处理器转换所述目标代码生成二进制文件”可以理解为所述第一处理器转换所述目标代码生成在第二处理器上加载的二进制文件。对于不同类型的第二处理器,第一处理器转换该目标代码得到的二进制文件不同。
例如,假设第一处理器为CPU,第二处理器为FPGA,该CPU可以转换该目标代码CVIR生成在FPGA上加载的二进制文件CFPGA,加载了二进制文件CFPGA的FPGA可以执行该二进制文件CFPGA定义的报文处理操作。
又例如,假设第一处理器为CPU,第二处理器为NP,该CPU可以转换该目标代码CVIR生成能够在NP上加载的二进制文件CNP,加载了二进制文件CNP的NP可以执行该二进制文件CNP定义的报文处理操作。
可选地,该S120具体可以包括:第一处理器即时(Just In Time,JIT)编译该目标代码生成二进制文件。
假设第一处理器和第二处理器为不同的处理器,在第一处理器与第二处理器相连的情况下,该第一处理器可以识别该第二处理器的类型。该第一处理器还可以安装该第二处理器的驱动软件,该第一处理器JIT编译该目标代码生成在该第二处理器上加载的二进制文件。
例如,假设第二处理器为FPGA,该FPGA与第一处理器相连后,该第一处理器可以识别该FPGA并JIT编译该目标代码CVIR生成在FPGA上加载的二进制文件,假设第二处理器为NP,该NP与第一处理器相连后,该第一处理器可以识别该NP并JIT编译该目标代码CVIR生成在NP上加载的二进制文件。
在本申请实施例中,第一处理器可以通过多种方式,转换该目标代码CVIR生成二进制文件。
图2和图3是根据本申请实施例的方法的示意性流程图。如图2和图3所示,作为可选地一例,该S120可以包括:
S121、所述第一处理器对所述目标代码进行反汇编,生成AL描述的计算机程序;
S122、所述第一处理器根据所述AL描述的计算机程序,生成所述二进制文件。
应理解,该AL为虚拟机对应的AL,为了便于说明,将该“虚拟机对应的AL”记为“第一AL”。
具体地,该第一处理器至少可以通过以下几种方式根据第一AL描述的计算机程序,生成所述二进制文件。
方式一、
图2是根据本申请实施例的用于报文处理的方法的另一例的示意性流程图,如图2所示,可选地,该S122可以包括:
S122a1、所述第一处理器将所述第一AL描述的计算机程序转换为第二AL语言描述的计算机程序;
其中,该第二AL为该第二处理器对应的AL。例如,假设第二处理器为NP,该第二AL为NP对应的AL。
S122a2、所述第一处理器对所述第二AL语言描述的计算机程序进行汇编,生成所述二进制文件.
方式二、
图3是根据本申请实施例的用于报文处理的方法的另一例的示意性流程图,如图3所示,可选地,该S122可以包括:
S122b1、所述第一处理器将所述第一AL语言描述的计算机程序转换为HDL描述的代码;
可选地,该HDL可以包括VHDL或Verilog语言。
S122b2、所述第一处理器对所述HDL的代码进行综合,生成门级描述;
可选地,该门级描述可以是电子设计交换格式(Electronic Design InterchangeFormat,EDIF)网表(netlist)。
S122b3、所述第一处理器对所述门级描述进行转换,生成所述二进制文件。
作为可选地一例,所述第一处理器转换所述目标代码生成二进制文件之后,以及所述加载了所述二进制文件的第二处理器根据所述报文处理操作,对报文进行处理之前,该方法100还可以包括:
第一处理器将该二进制文件加载到第二处理器上。进一步地,该第一处理器可以通过多种方式将该二进制文件加载到第二处理器上。
例如,第一处理器将所述二进制文件保存到指令存储器中,所述第二处理器与所述指令存储器耦合。该S130可以包括:所述第二处理器通过访问所述指令存储器获取所述二进制文件;所述第二处理器通过执行所述二进制文件中的指令序列,对所述报文进行处理。
又例如,第一处理器经由所述第二处理器的联合测试行为组织(Joint TestAction Group,JTAG)接口,将所述二进制文件加载到所述第二处理器,所述第二处理器为可重配的逻辑设备,所述二进制文件为比特配置文件。
作为可选地一例,所述可重配的逻辑设备包括FPGA,该比特配置文件具体为比特流文件(bitstream file)。例如,一个比特流文件可以表示为:*.bit。
作为可选地另一例,所述可重配的逻辑设备包括CPLD,该比特配置文件具体为固态技术协会是微电子产业的领导标准机构(Joint Electron Device EngineeringCouncil,JEDEC)文件。例如,一个JEDEC文件可以表示为:*.jed。
进一步地,第一处理器可以通过应用程序编程接口(Application ProgrammingInterface,API)对该二进制文件进行封装,以用于第一处理器将该二进制文件加载至第二处理器中。
在本申请实施例中,第一处理器编译高级编程语言描述的源代码生成能够被虚拟机执行的目标代码,加载在处理器上的二进制文件是通过转换该目标代码生成的,该目标代码作为过程码,用于实现高级编程语言描述的源代码到加载在处理器上的二进制文件的转化,有利于节约人力资源。进一步地,相较于其他编程语言(例如HDL),高级编程语言简单易操作,且高级编程语言具有开放的开发环境,能够节省使能第二处理器执行处理操作的成本。更进一步地,高级编程语言的种类较多,开发人员的选择性大。该方法具有较高的兼容性、灵活性且操作简单,有利于在第二处理器上加载二进制文件,从而有利于第二处理器对报文进行处理。
可选地,该第二处理器用于网络功能虚拟化(Network FunctionVirtualization,NFV)加速。例如,该第二处理器可以为硬件加速器,该硬件加速器的加速单元芯片可以包括嵌入式神经网络处理器(Network Processing Unit,NPU)芯片、FPGA或Soc等。该硬件加速器可以应用在多种设备形态上,例如,该硬件加速器可以是最新的总线和接口标准(Peripheral Component Interconnect Express,PCIE)网卡或加速资源池设备等。
以上,从整体角度描述本申请实施例的方法,其中,第一处理器能够实现源代码-目标代码-二进制文件的转换。进一步地,第一处理器可以通过运行在该第一处理器上的软件,实现源代码-目标代码-二进制文件的转换。以下,以一些软件为例,详细说明本申请实施例的方法,需要说明是,下文涉及的软件仅为示例不应对本申请构成任何限定。
作为可选地一例,该S110具体可以包括:
第一处理器通过运行在该第一处理器上的第一编译器编译高级编程语言描述的源代码生成能够被虚拟机执行的目标代码。
应理解,不同的高级编程语言对应不同的第一编译器。例如,若使用C语言描述源代码,该第一编译器为C语言编译器;若使用JAVA语言描述源代码,该第一编译器为JAVA编译器。
还应理解,每一种高级编程语言对应的第一编译器可以包括多种类型的编译器。例如,假设源代码CC是通过C语言描述的,该第一编译器可以包括:Turbo C、Borland C++或底层虚拟机(Low Level Virtual Machine,LLVM)等C语言编译器。
可选地,该方法100还可以包括:
第一处理器获取该源代码CC
具体地,该第一处理器通过运行在第一处理器上的编程软件获取该源代码CC,其中,该编程软件用于开发人员(或用户)进行源代码的描述,该第一编译器可以通过该编程软件获取该源代码。
应理解,不同的高级编程语言对应不同的编程软件。例如,若使用C语言描述源代码A,该编程软件可以包括Microsoft Visual C++、Microsoft Visual Studio、DEV C++或Watcom C++等C语言编程软件。
进一步地,该第一编译器和该编程软件运行在第一处理器上的虚拟机上。
例如,用户可以打开在第一处理器上运行的虚拟机的编程软件,该编程软件可以为Microsoft Visual C++软件。用户通过该软件描述定义报文处理操作A的源代码CC-A。该虚拟机的第一编译器为LLVM编译器,该LLVM编译器可以获取该源代码CC-A,并编译该源代码CC-A生成目标代码CVIR-A
作为可选地一例,该S120具体可以包括:
第一处理器通过运行在该第一处理器上的第二编译器转换所述目标代码生成二进制文件
应理解,该第二编译器属于运行在第一处理器上的软件系统的编译器,该软件系统与虚拟机相互独立。
还应理解,不同的第二处理器对应不同的第二编译器。例如,若第二处理器为FPGA,该第二编译器为FPGA对应的编译器,若的第二处理器为NP,该第二编译器为NP对应的编译器。
若第一处理器和第二处理器不是同一个处理器,第一处理器和第二处理器相连之后,该第一处理器(第一处理通过内部的软件)可以识别该第二处理器的类型,并调用该第二处理器对应的第二编译器转换该目标代码CVIR生成在该第二处理器上加载的二进制文件。
例如,假设第二处理器为NP,该NP与第一处理器相连后,该第一处理器可以识别该NP并调用NP对应的第二编译器将该二进制文件CVIRJIT编译为在NP上加载的二进制文件。
以上,结合图1至图3详细说明了本申请实施例的用于处理报文的方法。以下,结合图4和图5详细说明本申请实施例的用于处理报文的装置和设备。图4所示的装置300以及图5所示的设备400能够执行图1至图3所示的方法。关于装置300以及设备400的具体实现方式,可以参考图1至图3对应的实施例的描述。
图4是根据本申请实施例的用于处理报文的装置的示意性框图。如图4所示,该装置300包括第一处理单元310以及第二处理单元320。
第一处理单元310,用于编译高级编程语言描述的源代码生成能够被虚拟机执行的目标代码,所述源代码定义了报文处理操作,所述第一处理单元310还用于转换所述目标代码生成二进制文件;加载了所述二进制文件的第二处理单元320,用于根据所述报文处理操作,对报文进行处理。
可选地,所述虚拟机为Java虚拟机,所述目标代码中的指令为Java虚拟机指令集中的指令;或者所述虚拟机为伯克利报文过滤器BPF虚拟机,所述目标代码中的指令为BPF虚拟机指令集中的指令;或者所述虚拟机为扩展的伯克利报文过滤器eBPF虚拟机,所述目标代码中的指令为eBPF虚拟机指令集中的指令。
可选地,所述第一处理单元310具体用于:对所述目标代码进行反汇编,生成AL描述的计算机程序;根据所述AL描述的计算机程序,生成所述二进制文件。
可选地,所述AL为第一AL;所述第一处理单元310具体用于:将所述第一AL描述的计算机程序转换为第二AL描述的计算机程序;对所述第二AL描述的计算机程序进行汇编,生成所述二进制文件。
可选地,所述第一处理单元310具体用于:在所述第一处理单元310转换所述目标代码生成二进制文件之后,以及所述加载了所述二进制文件的第二处理单元320根据所述报文处理操作,对报文进行处理之前,将所述二进制文件保存到指令存储器中,所述第二处理单元320与所述指令存储器耦合。
所述第二处理单元320具体用于:通过访问所述指令存储器获取所述二进制文件;通过执行所述二进制文件中的指令序列,对所述报文进行处理。
可选地,所述第一处理单元310具体用于:将所述AL描述的计算机程序转换为HDL描述的代码;对所述HDL描述的代码进行综合,生成门级描述;对所述门级描述进行转换,生成所述二进制文件。
可选地,所述第一处理单元310具体用于:在转换所述目标代码生成二进制文件之后,以及所述加载了所述二进制文件的第二处理单元320根据所述报文处理操作,对报文进行处理之前,经由所述第二处理单元320的联合测试行为组织JTAG接口,将所述二进制文件加载到所述第二处理单元320,所述第二处理单元320为可重配的逻辑设备,所述二进制文件为比特配置文件。
应理解,这里的装置300以功能单元的形式体现。该装置300用于执行上述方法实施例中的各个流程和/或步骤,为了避免重复,在此不再赘述。
图5是根据本申请实施例的用于处理报文的设备的示意性框图。如图5所示,该设备400包括:存储器410、第一处理器420和第二处理器430。其中第一处理器420和第二处理器430可以为同一个处理器,也可以为不同的处理器。该存储器410可以集成在第一处理器420中,也可以独立于第一处理器420。该第一处理器420和存储器410可以通过内部连接通路互相通信,传递控制和/或数据信号。
该存储器410可以用于存储指令(具体地,该存储器410存储编译器,该编译器包括上文中的第一编译器以及第二编译器),该第一处理器420用于执行该存储器410存储的指令,并实现本申请前述实施例第一处理器420执行的操作。
具体地,第一处理器420用于:第一处理器编译高级编程语言描述的源代码生成能够被虚拟机执行的目标代码,所述源代码定义了报文处理操作;
所述第一处理器转换所述目标代码生成二进制文件;
加载了该二进制文件的第二处理器430用于:根据所述报文处理操作,对报文进行处理。
可选地,该设备400还可以包括网络接口,若该第一处理器420和第二处理器430为不同的处理器,该网络接口用于连接第一处理器420和第二处理器430.
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置300和设备400的更具体实现以及描述,可以参考前述方法实施例的对应过程,为了简洁,在此不再赘述。
应注意,本申请上述方法实施例可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。
可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
可理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-OnlyMemory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data RateSDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,DR RAM)。应注意,本文描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (12)

1.一种用于处理报文的方法,其特征在于,所述方法包括:
第一处理器编译高级编程语言描述的源代码生成能够被虚拟机执行的目标代码,所述源代码定义了报文处理操作;
所述第一处理器转换所述目标代码生成二进制文件;
所述第一处理器转换所述目标代码生成二进制文件,包括:
所述第一处理器对所述目标代码进行反汇编,生成汇编语言描述的计算机程序;
所述第一处理器根据所述汇编语言描述的计算机程序,生成所述二进制文件;
加载了所述二进制文件的第二处理器根据所述报文处理操作,对报文进行处理。
2.根据权利要求1所述的方法,其特征在于,所述虚拟机为Java虚拟机,所述目标代码中的指令为Java虚拟机指令集中的指令;或者
所述虚拟机为伯克利报文过滤器BPF虚拟机,所述目标代码中的指令为BPF虚拟机指令集中的指令;或者
所述虚拟机为扩展的伯克利报文过滤器eBPF虚拟机,所述目标代码中的指令为eBPF虚拟机指令集中的指令。
3.根据权利要求1或2所述的方法,其特征在于,所述汇编语言为第一汇编语言;
所述第一处理器根据所述汇编语言描述的计算机程序,生成所述二进制文件,包括:
所述第一处理器将所述第一汇编语言描述的计算机程序转换为第二汇编语言描述的计算机程序;
所述第一处理器对所述第二汇编语言描述的计算机程序进行汇编,生成所述二进制文件。
4.根据权利要求1或2所述的方法,其特征在于,所述第一处理器转换所述目标代码生成二进制文件之后,以及所述加载了所述二进制文件的第二处理器根据所述报文处理操作,对报文进行处理之前,所述方法还包括:
所述第一处理器将所述二进制文件保存到指令存储器中,所述第二处理器与所述指令存储器耦合;
所述加载了所述二进制文件的第二处理器根据所述报文处理操作,对报文进行处理包括:
所述第二处理器通过访问所述指令存储器获取所述二进制文件;
所述第二处理器通过执行所述二进制文件中的指令序列,对所述报文进行处理。
5.根据权利要求1或2所述的方法,其特征在于,所述第一处理器根据所述汇编语言描述的计算机程序,生成所述二进制文件,包括:
所述第一处理器将所述汇编语言描述的计算机程序转换为硬件描述语言描述的代码;
所述第一处理器对所述硬件描述语言描述的代码进行综合,生成门级描述;
所述第一处理器对所述门级描述进行转换,生成所述二进制文件。
6.根据权利要求1或2所述的方法,其特征在于,所述第一处理器转换所述目标代码生成二进制文件之后,以及所述加载了所述二进制文件的第二处理器根据所述报文处理操作,对报文进行处理之前,所述方法还包括:
经由所述第二处理器的联合测试行为组织JTAG接口,将所述二进制文件加载到所述第二处理器,所述第二处理器为可重配的逻辑设备,所述二进制文件为比特配置文件。
7.一种用于处理报文的装置,其特征在于,所述装置包括:
第一处理单元,用于编译高级编程语言描述的源代码生成能够被虚拟机执行的目标代码,所述源代码定义了报文处理操作,所述第一处理单元还用于转换所述目标代码生成二进制文件;
所述第一处理单元具体用于:
对所述目标代码进行反汇编,生成汇编语言描述的计算机程序;
根据所述汇编语言描述的计算机程序,生成所述二进制文件;
加载了所述二进制文件的第二处理单元,用于根据所述报文处理操作,对报文进行处理。
8.根据权利要求7所述的装置,其特征在于,所述虚拟机为Java虚拟机,所述目标代码中的指令为Java虚拟机指令集中的指令;或者
所述虚拟机为伯克利报文过滤器BPF虚拟机,所述目标代码中的指令为BPF虚拟机指令集中的指令;或者
所述虚拟机为扩展的伯克利报文过滤器eBPF虚拟机,所述目标代码中的指令为eBPF虚拟机指令集中的指令。
9.根据权利要求7或8所述的装置,其特征在于,所述汇编语言为第一汇编语言;
所述第一处理单元具体用于:
将所述第一汇编语言描述的计算机程序转换为第二汇编语言描述的计算机程序;
对所述第二汇编语言描述的计算机程序进行汇编,生成所述二进制文件。
10.根据权利要求7或8所述的装置,其特征在于,所述第一处理单元具体用于:
在所述第一处理单元转换所述目标代码生成二进制文件之后,以及所述加载了所述二进制文件的第二处理单元根据所述报文处理操作,对报文进行处理之前,
将所述二进制文件保存到指令存储器中,所述第二处理单元与所述指令存储器耦合;
所述第二处理单元具体用于:
通过访问所述指令存储器获取所述二进制文件;
通过执行所述二进制文件中的指令序列,对所述报文进行处理。
11.根据权利要求7或8所述的装置,其特征在于,所述第一处理单元具体用于:
将所述汇编语言描述的计算机程序转换为硬件描述语言HDL描述的代码;
对所述硬件描述语言描述的代码进行综合,生成门级描述;
对所述门级描述进行转换,生成所述二进制文件。
12.根据权利要求7或8所述的装置,其特征在于,所述第一处理单元具体用于:
在转换所述目标代码生成二进制文件之后,以及所述加载了所述二进制文件的第二处理单元根据所述报文处理操作,对报文进行处理之前,
经由所述第二处理单元的联合测试行为组织JTAG接口,将所述二进制文件加载到所述第二处理单元,所述第二处理单元为可重配的逻辑设备,所述二进制文件为比特配置文件。
CN201780087658.2A 2017-03-08 2017-03-08 用于处理报文的方法和装置 Active CN110352400B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2017/075996 WO2018161283A1 (zh) 2017-03-08 2017-03-08 用于处理报文的方法和装置

Publications (2)

Publication Number Publication Date
CN110352400A CN110352400A (zh) 2019-10-18
CN110352400B true CN110352400B (zh) 2021-05-04

Family

ID=63447073

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780087658.2A Active CN110352400B (zh) 2017-03-08 2017-03-08 用于处理报文的方法和装置

Country Status (2)

Country Link
CN (1) CN110352400B (zh)
WO (1) WO2018161283A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200139525A (ko) * 2019-06-04 2020-12-14 삼성전자주식회사 Fpga를 포함하는 전자 시스템 및 이의 동작 방법
CN111625243B (zh) * 2020-05-13 2023-07-18 北京字节跳动网络技术有限公司 跨语言任务处理方法、装置及电子设备
CN112818176B (zh) * 2021-02-08 2023-12-12 腾讯科技(深圳)有限公司 一种数据处理方法、装置、设备及存储介质
CN115473660A (zh) * 2021-06-11 2022-12-13 中兴通讯股份有限公司 网络传输层数据处理方法、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1570870A (zh) * 2003-03-13 2005-01-26 诺斯罗普-格鲁曼公司 终极管道和最优重排技术
CN101145109A (zh) * 2007-11-01 2008-03-19 上海交通大学 利用中间指令集的二进制翻译方法
CN101763280A (zh) * 2008-09-30 2010-06-30 Ics三重自动化软件有限公司 编译模型
CN104461522A (zh) * 2014-11-26 2015-03-25 盈世信息科技(北京)有限公司 基于脚本的辅助业务实现方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020083421A1 (en) * 2000-12-22 2002-06-27 Hitachi America, Ltd. Assembly language code compilation for an instruction-set architecture containing new instructions using the prior assembler
JP2005085051A (ja) * 2003-09-10 2005-03-31 Matsushita Electric Ind Co Ltd ソフトウェア変換装置
US9081626B2 (en) * 2010-05-03 2015-07-14 Renesas Electronics America Inc. Method and apparatus for converting software
CN104503819A (zh) * 2015-01-05 2015-04-08 中国科学院计算技术研究所 一种面向异os的汇编器及汇编移植方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1570870A (zh) * 2003-03-13 2005-01-26 诺斯罗普-格鲁曼公司 终极管道和最优重排技术
CN101145109A (zh) * 2007-11-01 2008-03-19 上海交通大学 利用中间指令集的二进制翻译方法
CN101763280A (zh) * 2008-09-30 2010-06-30 Ics三重自动化软件有限公司 编译模型
CN104461522A (zh) * 2014-11-26 2015-03-25 盈世信息科技(北京)有限公司 基于脚本的辅助业务实现方法

Also Published As

Publication number Publication date
WO2018161283A1 (zh) 2018-09-13
CN110352400A (zh) 2019-10-18

Similar Documents

Publication Publication Date Title
CN110096338B (zh) 智能合约执行方法、装置、设备及介质
CN107077337B (zh) 用于执行根据两个指令集架构编译的应用编码的系统和方法
CN110352400B (zh) 用于处理报文的方法和装置
US9772925B2 (en) Storage access debugging with disassembly and symbol entries
CN110059456B (zh) 代码保护方法、代码保护装置、存储介质与电子设备
US7069412B2 (en) Method of using a plurality of virtual memory spaces for providing efficient binary compatibility between a plurality of source architectures and a single target architecture
US20150379169A1 (en) Efficient emulation for pseudo-wrapped callback handling in binary translation software
US20190138438A1 (en) Conditional stack frame allocation
US10152313B1 (en) Shared library transformation on the same architecture
US20080301657A1 (en) Method of diagnosing alias violations in memory access commands in source code
US20180059981A1 (en) Short pointer mode applications in long pointer mode environments
US20170329619A1 (en) Multi-byte compressed string representation
US11099853B2 (en) Digit validation check control in instruction execution
US10884899B2 (en) Optimized trampoline design for fast software tracing
EP2941694B1 (en) Capability based device driver framework
US10452364B2 (en) Method and system for preparing code to be executed by programmable control devices
Cifuentes et al. Experience in the design, implementation and use of a retargetable static binary translation framework
US9760282B2 (en) Assigning home memory addresses to function call parameters
CN108304158B (zh) 一种动态库的代理方法及设备
US20170139681A1 (en) Class splitting in object-oriented environments
US11068246B2 (en) Control flow graph analysis
CN115629795A (zh) 一种可执行文件的配置方法、装置及电子设备
CN113849397A (zh) 执行引擎、虚拟机、相关装置和相关方法
CN112306539A (zh) 一种单片机应用层开发方法、系统、终端及介质
CN110673834A (zh) 一种源码调用方法、装置、计算机设备及存储介质

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