CN101645005A - 基于多维可变描述表的处理器结构与指令系统表示方法 - Google Patents
基于多维可变描述表的处理器结构与指令系统表示方法 Download PDFInfo
- Publication number
- CN101645005A CN101645005A CN200810140939A CN200810140939A CN101645005A CN 101645005 A CN101645005 A CN 101645005A CN 200810140939 A CN200810140939 A CN 200810140939A CN 200810140939 A CN200810140939 A CN 200810140939A CN 101645005 A CN101645005 A CN 101645005A
- Authority
- CN
- China
- Prior art keywords
- processor
- instruction
- register
- address
- type
- 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
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及计算机软件逆向分析领域,具体涉及一种基于多维可变描述表的处理器结构与指令系统表示方法;该方法采用多层三元组嵌套表Table构建处理器结构特征库和指令系统描述模板,Table表示为{<Tp1,Ts1,Ti1>,<Tp2,Ts2,Ti2>,……,<Tpn,Tsn,Tin>},每个三元组<Tpn,Tsn,Tin>代表一款处理器,Tpn对处理器进行分类、索引和筛选,Tsn提供寄存器结构信息、中断结构信息、复位地址信息和存储空间分配信息,Tin提供机器编码、汇编表达式和两者之间的映射关系,Table中的数据从处理器信息数据库中提取,对处理器信息数据库可进行管理和维护;本发明通用性强,可用于现有的大多数处理器。
Description
(一)、技术领域:
本发明涉及计算机软件逆向分析领域,特别涉及一种基于多维可变描述表的处理器结构与指令系统表示方法。
(二)、背景技术:
计算机软件的逆向分析中,对于特定处理器的目标代码还原,使用静态描述表可以有效表示处理器结构和指令基本码与汇编指令的对应关系。但由于不同处理器的结构和指令系统的差异性非常大,静态描述表不适用于多处理器多指令系统的统一表示。
当前的微处理器的结构特征主要从以下三个方面进行描述:
1、微处理器结构特点。从功能结构和应用背景看,微处理器可以分成微处理器MPU(Micro Processor Unit)、微控制器MCU(Micro Controller Unit)和数字信号处理器DSP(Digital Signal Processor)三大类。MPU是计算机和其他应用系统的核心部件,主要由运算单元、寄存器阵列、Cache和总线接口等部分组成。MCU一般以某一种MPU内核为芯片核心,内部集成ROM、EPROM、EEPROM、FLASH、RAM、A/D、D/A、总线逻辑、定时器/计数器、看门狗、1/O、串行接口、脉宽调制器等功能部件。为了适应不同的需要,一般一个系列的MCU具有多种衍生产品,每种衍生产品的内核都一样,不同的是内部集成的存储器容量、端口资源种类的配置以及封装形式,从而使MCU最大限度地与应用需求相匹配。DSP与MPU和MCU的最大区别在于DSP通常使用哈佛结构和专门针对信号处理而设计的指令,具有乘累加硬件单元和专用的乘累加指令,具有较强的数据处理能力,多数指令可以直接访问存储单元,且一条指令可以同时访问多个存储单元,加快了数据访问速度。
2、微处理器标识信息。处理器标识信息包括处理器生产厂家、处理器名、处理器系列、处理器类型、处理器位数、封装形式等信息。处理器类型是最重要信息,决定着目标代码分析过程可依据的结构参数和指令系统。各个处理器厂家各自有自己的主打生产处理器系列,它们在处理器类型、处理器位数和封装形式上有各自的固定配置。为适用不同的应用领域,不同厂家生产的相同型号或系列处理器往往拥也有多种封装形式。封装形式主要有双列直插DIP,塑料扁平封装QFP,小型集成电路封装SOIC,陶瓷栅阵列PGA等。在无法预知目标码属于哪一款处理器的情况下,可以根据处理器的外在特性(封装类型、引脚数、生产厂家等等)筛选处理器候选集,以缩小识别范围。
3、微处理器中代码执行相关资源。微处理器中代码执行相关资源包括指令结构和指令系统、寄存器组、中断结构和中断向量、可寻址内外部存储器结构、复位类型和复位入口地址等。指令结构所包含的基本信息包括处理器能识别的指令条数、指令寻址基本单位(基本指令字长,每次取指后程序计数器的自动累加值)、最小指令长度、最大指令长度、指令操作数个数等。寄存器是CPU内的存储单元,结构与处理器结构密切相关。寄存器组相关信息包括寄存器的名称、长度、内容、映射方式、状态模式、物理映射等属性。中断结构和中断向量表是代码执行入口的重要信息,由于不同型号处理器中断功能各不相同,中断向量表的类型,寻找中断处理程序入口地址需要做特殊的处理。
为满足多处理器多指令系统的通用性和可扩展性需求,需要解决一系列问题,首先是抽象出各款处理器结构和指令系统内在的普遍性特征;其次是定义一个通用表达方式去解析指令相关属性;再则还需要解决不同寻址方式带来的地址表达和计算问题。
常用嵌入式处理器的指令系统体系结构有两种:一种是复杂指令集CISC(Complex Instruction Set Computer)结构。以Intel X86为代表的微处理器采用这种体系结构。另一种是精简指令集RISC(Reduced Instruction Set Computer)结构,大多数MCU和DSP处理器都采用RISC结构。CSIC结构是为了增强指令的功能,设置一些功能复杂的指令,把一些原来由软件实现的改用硬件来实现。RISC系统尽量简化指令功能,只保留那些功能简单、能在一个机器周期内完成的指令,较复杂的功能用一段子程序来实现。但无论是哪种指令结构,都包含四个要素:指令类型、指令操作、寻址模式和操作数。当前的指令系统结构特征主要从以下三个方面进行描述:
1、机器指令一般格式。机器指令是处理器唯一能识别的指令形式,由连续的二进制码组成。一般地,根据机器指令各二进制码位的功能不同,可以将机器指令表示为一个由操作码、条件码和操作数编码构成的三元组。操作码是唯一标识机器指令的若干二进制码位,用于标识指令的功能。条件码用于表示指令执行的条件,一种机器指令可以在多种不同的条件下执行,对于一条机器指令来说,条件码部分是不确定的。操作数编码是指令所操作对象的二进制编码值,一条机器指令可以对多种不同的对象进行操作。
2.汇编指令的一般表示形式。汇编指令是一种对程序员来说可读性相对较强的指令形式,其表示形式是字符串。一般地,按照汇编指令表达式的逻辑功能,也可以看成操作符、条件词、操作数的一个三元组。一条汇编指令可以带多种条件词和不同的操作数的组合,表示指令的不同执行条件。
3.机器指令与汇编指令的对应关系。汇编语言是最接近机器语言的指令表示方式,每条汇编指令都能唯一地对应于一条机器指令,汇编指令的各组成部分与机器指令的各组成部分之间存在确定的对应关系。汇编指令操作符与机器指令操作码之间存在一对多的关系,通常当机器指令操作码编码值确定时,其所对应的汇编指令操作符也可以确定;但汇编指令操作符根据执行条件以及操作对象的不同可能对应于多种不同的机器指令操作码值。但汇编指令的条件词表达式与机器指令的条件码编码值之间存在一一对应的关系,且这种对应关系不随指令的不同而不同,即某一种条件码编码值将一定对应与某一种条件词。汇编指令的操作数部分与机器指令的操作数编码部分也存在确定的对应关系,机器指令中的寄存器编码、字符串编码以及数值编码对应出现在汇编指令操作数部分的寄存器类、字符串类以及数字类可变部分的二进制编码信息。至此可以得出机器指令与汇编指令之间的对应关系为:根据机器指令中的操作码确定汇编指令的操作符;根据机器指令的条件码唯一确定汇编指令中的条件词;根据机器指令中的寄存器编码、字符串编码以及数字编码,唯一的确定汇编指令中出现的寄存器名、字符串以及某种进制的数字。
(三)、发明内容:
本发明要解决的技术问题是:针对现有技术不足,提出一种基于多维可变描述表的处理器结构与指令系统表示方法,它通用性强,可用于现有的大多数处理器。
本发明的技术方案:
一种基于多维可变描述表的处理器结构与指令系统表示方法,采用多层三元组嵌套表Table构建处理器结构特征库和指令系统描述模板,多层三元组嵌套表Table含有处理器标识信息表Tp、与Tp对应或匹配的处理器结构信息表Ts、与Tp对应或匹配的处理器的指令系统表Ti,多层三元组嵌套表Table表示为{<Tp1,Ts1,Ti1>,<Tp2,Ts2,Ti2>,……,<Tpn,Tsn,Tin>},其中n为大于等于1的自然数,每个三元组<Tpn,Tsn,Tin>代表一款处理器,处理器标识信息表Tp对处理器进行分类、索引和筛选,处理器结构信息表Ts提供寄存器结构信息、中断结构信息、复位地址信息和存储空间分配信息,处理器的指令系统表Ti提供机器编码、汇编表达式和两者之间的映射关系。
多层三元组嵌套表Table中的数据从处理器信息数据库中提取,对处理器信息数据库可进行管理和维护,管理和维护含有登录、数据录入、数据查询、数据修改、数据引用、数据输出和系统维护,登录用于管理系统的授权使用,非授权用户禁止进入系统,不同授权用户对系统信息的使用权限也是不一样的,如代码分析员的授权为“引用授权”,只能通过反汇编接口和结构分析接口调用数据库信息,而数据录入员的授权为“录入授权”,可以对数据库信息进行增、删、查、改等操作,数据录入、查询、修改、引用、数输出和维护等都是数据库系统的基本功能,数据引用模块是反汇编、结构分析和指令集识别等部件的数据引用接口。
处理器信息数据库含有处理器分类信息表(见表1)、处理器基本结构信息表(见表2)、存储空间分配表(见表3)、指令系统信息表(见表4)、通用寻址类型表(见表5)、寄存器表(见表6)、代码字符转换表(见表7)、中断向量信息表(见表8)、特征信息表(见表9)、处理器封装类型表(见表10)。
处理器标识信息表Tp含有处理器分类信息表(见表1)和处理器封装类型表(见表10)。
处理器分类信息表(见表1)含有处理器编号、处理器名、处理器类型、处理器生产厂家、处理器系列号、处理器位数、封装类型;
处理器封装类型表(见表10)含有处理器编号、封装引脚编码、引脚数、封装名称。
由于许多处理器的同一款型号有多种封装和引脚的组合,如由Motorola公司生产微控制器MC68HC05SR3有三种封装形式:40引脚双列直插封装(DIP);42引脚塑料收缩型双列直插封装(SDIP);44引脚塑料四面扁平型封装(QFP)。处理器与其封装/引脚是存在一对多的关系,所以将其独立出来。
处理器结构信息表Ts含有指令基本信息表、寄存器信息表、中断结构表、存储空间配置表、处理器复位地址表。
指令基本信息表含有指令条数(在表2中)、基本的指令字宽(在表2中)、最小指令长度(在表2中)、最大指令长度(在表2中)、指令操作数最大个数(在表2中),指令基本信息表主要用于标识不同处理器的指令编址长度及CISC指令集的变长指令;
寄存器信息表表示为<TREG1,TREG2,……,TREGk>,其中k为大于等于1的自然数,任一个TREGk含有寄存器名(在表6中)、寄存器的长度(在表6中)、寄存器编码(在表6中)、寄存器扩展编码(在表6中),每个TREGk代表一个寄存器,根据寄存器编码以及寄存器扩展编码索引到某一个具体的寄存器,并使用其汇编表示符替换可变替换字符串变量,从而得到与寄存器有关的汇编指令字段;
中断结构表含有中断向量数(在表2中)、中断向量长度(在表8中)、中断向量表基地址(在表2中)、是否为浮动中断向量表(在表2中)、中断向量表是否有效(在表2中)、中断向量表,中断向量表表示为<INTADD1,INTADD2,……,INTADDr>,其中r为大于等于1的自然数,任一个INTADDr含有中断向量号(在表8中)、中断向量地址(在表8中)、中断类型(在表8中)、中断向量组成指示字(在表8中)、中断功能(在表8中),中断向量表内容是标识目标代码基本入口的重要信息,由于不同型号处理器中断功能各不相同,中断向量存在不同的类型,寻找中断处理程序入口地址需要做特殊的处理,各中断类型通常对应不同的中断源,如RESET、硬中断、软中断、定时器中断、串口中断、D/A中断、A/D中断等,中断向量表有效,则中断结构信息多元组中的信息均为有效信息,若中断向量表为固定类型,可以从中断向量表直接获得中断向量,若中断向量表为浮动类型,则说明中断向量基地址存放在某一寄存器或内存单元中,如:由Motorola公司生产的一款微控制器MC68000,它的中断向量表是不确定的,其中断向量基地址放在VBR寄存器中[12],需要根据其内容计算得到中断向量表起始地址;
存储空间配置表表示为<空间配置信息表、空间分配表1,……,空间分配表m>,其中m为大于等于1的自然数,所述空间配置信息表含有数据总线宽度(在表2中)、地址总线宽度(在表2中)、存储器编址方式(在表2中)、可寻址的存储器大小(在表2中)、内部存储空间最大容量(在表2中)、外部存储空间最大容量(在表2中)、内部存储空间分段数(在表2中)、外部存储空间分段数(在表2中)、内部端口数量(在表2中)、内部端口宽度(在表2中)、外部端口数量(在表2中)、外部端口宽度(在表2中),任一空间分配表m含有子存储空间名(在表3中)、子存储空间起始地址(在表3中)、子空间大小(在表3中),每个空间分配表m对应一个存储空间或IO空间,存储空间是代码的物理存在空间,代码处理(尤其是访存指令和转移指令)时,目标地址必须考虑其空间分布状况,通常嵌入式处理器都有片内部存储空间和片外存储空间,内外空间的容量、速度有较大差异,存储空间还有两种结构--冯.诺依曼结构和哈佛结构,其主要区别在于冯.诺依曼结构允许指令和数据混合存储在同一存储模块中,而哈佛结构使用独立的存储模块来分别存储指令和数据,根据处理器不同存储器子空间的功能分为内部程序空间、内部数据空间、内部指数混存空间、外部程序空间、外部数据空间、外部指数混存空间和内外部IO空间等类型,明确每个存储空间的范围和用途的另一个重要作用是指令合法性检查,如代码程序存储空间在2000H到3000H之间,如果反汇编得到指令CALL1000H,跳转地址超出了程序存储空间的地址范围,可以判断为非法转移指令;
处理器复位地址表表示为<处理器复位入口地址1(在表2中),处理器复位入口地址2(在表2中),……,处理器复位入口地址p(在表2中)>,其中p为大于等于1且小于等于8的自然数,处理器复位入口地址p是处理器目标代码的初始入口地址,只是对应上电复位、软件复位、程序异常等处理模式不同而已。
处理器的指令系统表Ti含有指令的机器编码、汇编表达和从机器编码到汇编表达的映射关系,解决了将多种不同型号处理器指令的机器编码、汇编符号和从机器编码到汇编符号的变换这三个方面的统一表示方法,就能使反汇编器采用统一的方法将运行于不同型号处理器上的二进制可执行程序转换为汇编程序。
指令的机器编码表示为<机器码字段1,机器码字段2,……,机器码字段q>,任一机器码字段q含有第q指令字二进制编码(在表4中)、第q指令字掩码(在表4中)、可变部分相关二进制码位置,其中q为大于等于1且小于等于8的自然数,参照机器指令的一般格式,用指令字二进制编码及其掩码来唯一标识指令的一个二进制代码字段,掩码指示机器指令中指令字所在的位置,其构造方式为:若某一位属于指令字,则在对应位上置“1”,否则对应位清“0”,可变部分相关二进制码位置指示与各可变部分相对应的二进制码位在机器指令中所在的位置;
所述汇编表达表示为<汇编符字段1,汇编符字段2,……,汇编符字段s>,任一汇编符字段s含有指令汇编符(在表4中)、替换字符串s的二进制编码(在表4、5中)、细分类别码s(在表4、5中),其中s为大于等于1且小于等于16的自然数,指令汇编符表示指令汇编助记符中与该指令有关的固定字符和可变字符串,在指令操作符的可变字符处使用字符串变量<C1>~<Cn>表示,在操作数会发生变化的字符串处使用从字符串变量D开始的字符进行替换,这些字符串变量按顺序分别对应于替换字符串token的二进制编码,替换字符串token细分类别码是对某种可变部分类型的进一步细分,在表示寄存器名与二进制码之间对应关系的过程中,可能存在不同的寄存器名对应于相同二进制码的情况。例如:68000中对地址寄存器A3和数据寄存器D3在指令中出现时都用的是编码011,为了进行区分将数据寄存器的类别码编为00h,而将地址寄存器类别码编码为01h。在表示字符串的过程中也存在相同的情况,同样需要扩展类型,而在表示数字类型的可变部分时,扩展类型表示当前的数字所使用的进制,包括:十六进制、十进制、八进制以及二进制,汇编符字段与机器码字段一一对应,从机器码到汇编语句的变换就是每个字段的转换;
汇编指令的固定部分直接用实际字符串表示,而可变部分使用带编号的字母来代替,因此字段映射关系的确定实际上就是完成可变部分的符号替换,以确定汇编指令的每一个字段汇编符号,可变部分出现在条件词部分和操作数位置上,条件词部分出现的可变部分一定是某种形式的字符串,而在操作数位置上出现的可变部分,可能为三种类型之一:①寄存器类,该可变部分出现的是寄存器名;②字符串类,该可变部分出现的是某种有特殊含义的字符串;③数值类,该可变部分出现的是某种进制的数值(如立即数等),因此,从机器编码到汇编表达的映射关系含有字符串映射、寄存器映射、数值映射;
字符串映射含有汇编字符串、机器二进制编码、细分类型及编码;在某些处理器的指令集中,二进制代码需要翻译成字符串来表示,同一指令系统中可能有不同的字符串使用相同的编码,遇到这样的字符串时,将表示字符串的指令二进制码进行细分,使用细分类别码来表示不同类型的字符串,字符串映射能根据字符串细分编码和字符串在指令中的二进制编码的拼接索引到某一项,使用字符串汇编表示方法替换某一个指令的可变字符串变量。
寄存器映射含有寄存器名(在表6中)、寄存器编码(在表6中)、寄存器扩展编码(在表6中);
数值映射根据替换字符串的类型直接完成数值转换,除此而外,替换字符串的类型还有转移目标地址计算和通用寻址类型。
不同处理器的转移指令所使用的目标地址计算方法不相同,同一处理器的不同转移指令所使用的目标地址计算方法也不尽相同。显示含有转移目标地址的指令(如直接跳转以及直接调用指令),可以以形式化的方式给出其目标地址的计算方法,其一般表示形式为:
[n∧/∨][old$/new$+]signx_oper/unsignx_oper[+m]
含义为:当前指令的地址(old$)或者下一条指令的地址(new$)与高n位为1的数执行逻辑与(∧)或者逻辑或(∨)操作,加上目标地址计算之前指令操作数(oper)的带符号扩展为x位(signx_oper)或无符号扩展为x(unsignx_oper)后的结果,再加上数字m(+m),形成跳转或调用的目标地址。“[]”表示这个部分可以省略,“/”表示两种情况只取其一。
在表示寻址方式表达式时,使用与指令表达式相同的设计方法,将某一替换字符串变量再细分成多个替换字符串变量,同样分为可变和固定的字符串,每个可变字符串(token)的类型同样取值为寄存器类型、字符串类型、数值类型。例如:对于寻址方式d[BI+DI],(其中d表偏移量,BI和DI都是寄存器)其汇编表达式存储格式为<T1>[<T2>+<T3>]。
寻址方式表达式:=<寻址方式判别码位置,寻址方式判别码值,token相关的二进制码位置,寻址方式汇编表达式,替换字符串token类型,token扩展类型>。
表1处理器分类信息表
字段名称 | 字段标识符 | 数据类型 | 可否为空 | 字段说明 |
处理器编号 | Cpu_ID | Int | 否 | 内部编号 |
处理器名 | Cpu_name | Varchar(20) | 否 | 厂家命名 |
处理器类型 | Cpu_type | Varchar(10) | 否 | 区分DSP、MPU还是MCU |
处理器生产厂家 | Producer | Varchar(20) | 生产处理器的厂家 | |
处理器系列号 | Serial_num | Varchar(20) | 具体的系列号 | |
处理器位数 | Cpu_bitnum | tinyint | 否 | 8/16/32/64 |
封装类型 | Pack_type | Varchar(20) |
表2处理器基本结构信息表
字段名称 | 字段标识符 | 数据类型 | 可否为空 | 字段说明 |
处理器编号 | Cpu_ID | Int | 否 | 内部编号 |
指令条数 | Instr_total | Smallint | 否 | 表示本处理器所支持的指令条数 |
基本的指令字宽 | Instr_width | tinyint | 否 | 以位为单位的指令指令字的大小 |
最小指令长度 | Instr_minlen | tinyint | ||
最大指令长度 | Instr_maxlen | tinyint | ||
操作数类型数 | Operand_typenum | tinyint | ||
指令操作数最大个数 | Operand_maxnum | tinyint | 统计指令中的操作数个数 | |
指令操作数最小个数 | Operand_minnum | tinyint | ||
操作数寻址类型数 | Addr_typenum | tinyint | 统计操作数的寻址类型数 | |
寄存器长度 | Reg_len | tinyint | 以位为单位的表示寄存器的宽度 | |
寄存器个数 | Reg_total | Smallint | 处理器中的寄存器个数 | |
可寻址的寄存器的个数 | Addr_reg_total | Smallint | 指出可寻址的寄存器的个数 | |
中断向量数 | InterVec_total | Smallint | 支持的中断异常个数 | |
中断向量长度 | InterVec_len | tinyint | 以位为单位的中断向量的长度 | |
中断向量表基地址 | InterbasicAddr | char(16) | 中断向量表的起始地址 | |
是否为浮动中断向量表 | Inter_flexible | Tinyint | 0为否、1为是 | |
中断向量表是否有效 | Inter_validity | Tinyint | 0为无效、1为有效 | |
数据总线宽度 | Databus_width | Tinyint | 数据总线的位数 | |
地址总线宽度 | Addrbus_width | Tinyint | 地址总线的位数 | |
可寻址的存储器大小 | Addr_memsize | Bigint | 根据地址总线的宽度来决定 | |
立即数表达方式 | Imm_express | char(5) | 在该处理器指令中的立即数表达方式 | |
是否支持虚拟地址 | Virtual_addr | Tinyint | 0为不支持、1为支持 | |
大端模式或小端模式 | Byte_mode | Tinyint | 否 | 0为大端、1为小端、2为两者都是 |
存储器编址方式 | Mem_addrmode | Tinyint | 否 | 字节编址或字编址 |
内部存储空间最大容量 | Inmem_maxspace | Bigint | 处理器所能寻址的最大内部地址空间 | |
内部存储空间分段数 | Inmem_seg | tinyint | 根据功能的分段 | |
外部存储空间最大容量 | Exmem_maxspace | bigint | 处理器所能寻址的最大外部地址空间 | |
外部存储空间分段数 | Exmem_seg | tinyint | 根据功能分段 |
内部端口数量 | Inport_total | Smallint | ||
内部端口宽度 | Inport_width | tinyint | ||
内部端口起始地址 | Inport addr | char(16) | ||
外部端口数量 | Export total | Smallint | ||
外部端口宽度 | Export_width | Tinyint | ||
外部端口起始地址 | Export_addr | char(16) | ||
有效复位地址个数 | Effective_addr_num | Tinyint | 否 | 表示以下有效的复位地址数 |
复位地址的类型 | Reset_addr_type | Tinyint | 否 | 00h为存放在中断向量表中的复位向量,01h为单独复位地址 |
处理器复位入口地址1 | Reset_addr1 | Char(16) | 表示处理器的第1个复位起始地址 | |
处理器复位入口地址2 | Reset_addr2 | Char(16) | 表示处理器的第2个复位起始地址 | |
处理器复位入口地址3 | Reset_addr3 | Char(16) | 表示处理器的第3个复位起始地址 | |
处理器复位入口地址4 | Reset_addr4 | Char(16) | 表示处理器的第4个复位起始地址 | |
处理器复位入口地址5 | Reset_addr5 | Char(16) | 表示处理器的第5个复位起始地址 | |
处理器复位入口地址6 | Reset_addr6 | Char(16) | 表示处理器的第6个复位起始地址 | |
处理器复位入口地址7 | Reset_addr7 | Char(16) | 表示处理器的第7个复位起始地址 | |
处理器复位入口地址8 | Reset addr8 | Char(16) | 表示处理器的第8个复位起始地址 |
表3存储空间分配表
字段名称 | 字段标识符 | 数据类型 | 可否为空 | 字段说明 |
处理器编号 | Cpu_code | int | 否 | 内部编号 |
子存储空间编码 | Mem_code | tinyint | 否 | 对每一个子空间的内部编码 |
子存储空间名 | Mem_name | Varchar(20) | 否 | 用于定义一个子空间的名称 |
子存储空间起始地址 | Mem_addr | char(16) | 对应于某一个特定的空间的起始地址 | |
子空间大小 | Mem_size | Bigint | 对应于特定的空间大小,以字节为单位 | |
子存储空间的属性描述 | Mem_descrip | Text | 定义各种存储空间类型的文字描述 | |
子存储空间特性编码 | Mem_desc_code | Tinyint | 否 | 编码规则见补充说明1 |
补充说明1:
子存储空间特性及读写属性的编码:
使用一个字节对子存储空间特性进行编码,具体的编码如下图所示:
7 3 2 1 0
对子空间特性的编码 | 读 | 写 | 执行 |
3~7位:对子存储空间特性的编码。主要用于区分内部和外部的程序空间、数据空间以及指数混存空间,具体编码为:
00000:不可知的子空间特性编码;00001:内部程序空间(IC);
00010:内部数据空间(ID); 00011:内部指数混存空间(ICD);
00100:外部程序空间(EC); 00101:外部数据空间(ED);
00110:外部指数混存空间(ECD);
2位:表示该存储空间是可读的。1位:表示该存储空间是可写的。
0位:表示该存储空间是可执行的。
通过对这三位的组合可以表示8种不同的存储空间读写类型。
表4指令系统信息表
字段名称 | 字段标识符 | 数据类型 | 可否为空 | 字段说明 |
处理器编号 | Cpu_code | Int | 否 | 内部编号 |
指令ID | Instr_ID | Smallint | 否 | 对每一条指令记录的内部编码 |
指令汇编符 | Instr_asm | Varchar(100) | 否 | 见补充说明2-A |
指令注释 | Instr_note | Text | 说明指令含义 | |
指令类型 | Instr_type | Smallint | 否 | 见补充说明2-C |
指令用途编码 | Instr_use_code | Tinyint | 表示该指令所属的特殊指令类型,如X86中某些前缀指令等等。 | |
操作数个数 | Operand_num | Tinyint | 否 | 记录该指令中操作数的个数。 |
使用实例 | Example | Varchar(100) | 表示该指令在实际应用中的使用实例。 | |
平均使用频度 | Aver_freq | Tinyint | 用于未知指令集的识别。 | |
对标志位的影响 | Flag | Bit | 表示是否影响对条件指令有作用的标志位。 | |
第1指令字二进制编码 | Code1 | int | 根据地址读入的第1个指令字的内容,指令字的内容是将确定的位用正确的0或1来表示,而不确定的位用0来表示,对某位是否确定的区分由掩码字段来区分 | |
第1指令字掩码 | Mask1 | Int | 用某一位为1来表示该位为是本指令字中的确定位,某一位为0表示该位是本指令字中的不确定位,全0表示该指令字无效。 |
第2指令字二进制编码 | Code2 | Int | ||
第2指令字掩码 | Mask2 | Int | ||
第3指令字二进制编码 | Code3 | Int | ||
第3指令字掩码 | Mask3 | Int | ||
第4指令字二进制编码 | Code4 | Int | ||
第4指令字掩码 | Mask4 | Int | ||
第5指令字二进制编码 | Code5 | Int | ||
第5指令字掩码 | Mask5 | Int | ||
第6指令字二进制编码 | Code6 | Int | ||
第6指令字掩码 | Mask6 | Int | ||
第7指令字二进制编码 | Code7 | Int | ||
第7指令字掩码 | Mask7 | Int | ||
第8指令字二进制编码 | Code8 | Int | ||
第8指令字掩码 | Mask8 | Int | ||
替换字符串1的二进制码 | String1_replace | char(36) | 见补充说明2-B | |
细分类别码1 | Class_code1 | Tinyint | 见补充说明2-B | |
扩展指令字相对偏移1 | Exten_instr_rel_disp1 | Tinyint | 表示在替换字符串是通用寻址类型时的若使用扩展指令字时,扩展指令字起始地址与当前替换字符串二进制码所使用的最高指令字地址的相对位置,以指令字长为单位。即紧跟在当前字符串二进制码所使用的最高指令字地址后的扩展指令字,其相对偏移为1。 | |
替换字符串2的二进制码 | String2_replace | char(36) | ||
细分类别码2 | Class_code2 | Tinyint | ||
扩展指令字相对偏移2 | Exten_instr_rel_disp2 | Tinyint | ||
…… | ||||
替换字符串16的二进制码 | String16_replace | char(36) |
细分类别码16 | Class_code16 | Tinyint | ||
扩展指令字相对偏移16 | Exten_instr_rel_disp16 | Tinyint | ||
替换字符串类型指示字 | String_type | Bigint | 见补充说明2-B | |
跳转地址计算方法 | Jump_addr_calc | Tinyint | ||
跳转地址位置 | Jump_addr_pos | Tinyint |
补充说明2:
A.指令汇编表示字段说明:
这里是对指令汇编表达式的形式化描述,将每一条指令看作是多个可单独表示的字符串(可单独表示的字符串是指:在指令的各种形式中固定不变或能归为以下的12种类型之一的替换字符串变量)的连接,这些字符串可以是不变的,也可以是变化的。对于不变的字符串来说,只要将它们直接表示在指令的汇编表示方式中;对于变化的字符串来说,每一个字符串都用一个带编号的替换字符串变量来表示,其中在与操作码有关的替换字符串变量使用<C1>…<Cn>来表示,与操作数有关的替换字符串变量使用C以后的字母来表示,即与第1个操作数有关替换字符串变量使用<D1>…<Dn>,与第2个操作数有关的替换字符串变量使用<E1>…<En>,以此类推。例子:
ADD,<C1>,…<Cn><D1>[<D2>+<D3>],<E1>[<E2>…<En>],…
每个替换字符串变量可能为以下12种类型之一:
类型1:使用指令二进制码中的相关位直接用16进制表示。
类型2:使用指令二进制码中的相关位加上更新后的程序计数器的值,并用16进制表示。
类型3:使用指令二进制码中的相关位加上更新前的程序计数器的值,并用16进制表示。
类型4:使用指令二进制码中的相关位直接用浮点立即数的形式表示。
类型5:使用指令二进制码中的相关位直接用10进制表示。
类型6:寄存器的表达方式。
类型7:根据二进制代码转换为某种字符串(寄存器除外)。
类型8:通用寻址表达方式。
类型9:带符号扩展为16位。
类型10:带符号扩展为32位。
类型11:带符号扩展为64位。
类型12:无符号扩展为16位。
类型13:无符号扩展为32位。
类型14:无符号扩展为64位。
Ci:可能表示的类型:类型1/类型5/类型8
Di/Ei/…:可能表示的类型:类型1/类型2/类型3/类型4/类型5/类型6/类型7/类型8/类型9/类型10/类型11/类型12/类型13/类型14。
B.替换字符串的二进制码/细分类别码/替换字符串类型指示字结构说明:
这3个字段描述的是某一种字符串的类型及其产生方法的,产生字符串以后将替换在指令汇编表达式中对应的字符串变量,从而形成适当的汇编指令格式。
*替换字符串的二进制码的组成:可以有6个部分构成,每个部分的结构为:
二进制码长度:1个字节;0表示无效
指令字序: 1个字节;出现的指令字序号;
起始位置: 1个字节;在某个指令字中的起始位号
例子:假设为了得到某一个替换字符串将要使用位用x表示(指令字长度为8,并且该组成部分分布在连续的区域)
指令字0:11111111
指令字1:01xxxxx0
这3个字节的值分别为:5,1,1,最后这18个字节的值为:00 00 00 00 00 0000 00 00 00 00 00 00 00 00 05 01 01h。
*替换字符串类型指示字:
每个替换字符串4位——指示属于以上所述的14种类型的哪一种,共64位。
0000 未使用(表示这条指令中此替换字符串未使用);
0001 类型1;
0010 类型2;
0011 类型3;
0100 类型4;
0101 类型5;
0110 类型6;
0111 类型7;
1000 类型8;
1001 类型9;
1010 类型10;
1011 类型11;
1100 类型12;
1101 类型13;
1110 类型14;
*细分类别码:
主要用于字符串的类型为类型6和类型8的情况,对应与寄存器表和代码字符转换表中编码的高位部分(具体解释见寄存器表和代码字符转换表中的解释)在入库的过程中,使用下拉列表来让用户进行选择,下拉列表中的内容是从寄存器表或代码字符转换表中读取的类别码。
例子:68000中对地址寄存器A3和数据寄存器D3在指令中出现时都用的是编码011,为了进行区分将数据寄存器的类别码编为00h,而将地址寄存器类别码编码为01h。
C.指令类型:
指令类型编码可分为3小部分,第1小部分为指令大类编码,第2小部分为特殊意义编码字段,第3小部分为指令类型的详细编码。
15 14 12 11 10 9 8 7 6 0
是否转移指令 | 指令大类 | 是否影响标志 | 保留恒置1 | 出栈or入栈指令 | 是否间接转移 | 是否为特殊指令 | 指令类型详细分类 |
第15位:用来表示这种类型的指令是否改变程序的流程。若该位为1,表示该类型的指令改变程序的流程;若该位为0,表示该类型的指令不改变程序的流程。12~14位:用来表示某种大类的指令,如条件跳转类,无条件跳转类,数据传送类等,这几位将直接决定指令的对流程产生何种影响,是程序框架分析的主要依据。
当15位为1时,这几位的编码情况为:
000:条件跳转指令
001:无条件跳转指令
010:条件分支(调用)指令
011:无条件分支(调用)指令
100:返回类指令
101:复位类指令
110:陷阱指令(包括软中断指令)
111:条件返回类指令
当15位为0时,这几位的编码情况为:
000:未知指令
001:测试类指令(包括比较指令等)
010:系统控制类指令(包括某些特权指令,置位或修改条件码寄存器的状态位的指令,以及协处理器控制指令)
011:堆栈操作类指令
100:地址操作类指令
101:浮点操作类指令(浮点指令的立即数有特殊的表示方法)
110:数据传送类指令(包括输入输出类指令以及常传送指令)
111:数据运算类指令(包括逻辑运算类指令,数字运算类指令,位运算类指令)
11位:指令是否影响标志位。若该位为1,则表示这种指令影响标志位;若该位为0,则表示这种指令不影响标志位。
10位:保留,恒为1。
9位:若为0表示出栈指令,为1表示入栈指令。
8位:若该指令为跳转指令,则用该位来标识该指令是否是间接转移。
7位:表示该指令是否为需要特殊处理的指令
0~6位:指令类型的详细分类。
指令的详细分类将根据不同的处理器进行,对某一种具体的指令赋予同样的编码,如:将各种MOV(包括MOV.L,MOV.B等)指令都编码为000000。
表5通用寻址类型表
字段名称 | 字段标识符 | 数据类型 | 可否为空 | 字段说明 |
处理器编号 | Cpu_code | Int | 否 | 内部编号 |
寻址类型ID | Addr_ID | Tinyint | 否 | 对每一个寻址类型的唯一编码 |
寻址类型名 | Addr_name | Varchar(40) | 否 | 给出寻址类型的名称 |
寻址方式代码位置 | Addr_code_pos | Char(36) | 见补充说明3-A | |
寻址方式代码编码值 | Addr_code | Smallint | 否 | 见补充说明3-A |
寻址方式汇编表达式 | Addr_expression | Varchar(100) | 否 | 见补充说明3-B |
替换字符串1的二进制码 | String1_replace | Char(36) | 见补充说明3-C | |
细分类别码1 | Class_code1 | Tinyint | 见补充说明3-C | |
…… | ||||
替换字符串8的二进制码 | String8_replace | char(36) | ||
细分类别码8 | Class_code8 | Tinyint | ||
替换字符串类型指示字 | String_type | Int | 见补充说明3-C |
补充说明3
A.寻址方式代码位置/寻址方式代码编码值说明:
在使用通用的寻址方式字段的指令系统中,必然有某些位来指示使用了哪一种寻址方式,这些位就是寻址方式判别码,数据库表中的寻址方式判别码位置/寻址方式判别码编码值字段就是指示这些位在指令中的位置以及内容的,该表中的每条记录在寻址方式判别码字段都会有不同的值。
*寻址方式代码位置:指示组合后的通用寻址方式二进制码字段以及扩展指令字中,某一种寻址方式的判别码所在的位置及长度,由六个部分组成每个部分用3个字节来表示,高字节表示长度,中间字节表示指令字号,低字节表示在某个指令字中的起始位置,与指令系统表中的“替换字符串的二进制码”字段含义相同。
*寻址方式代码编码值:指令中出现某一种寻址方式时,以上字段所指示的位置上的值。按照位的高低关系拼接成两个字节,没有使用到的部分用0表示。
例子:在X86的指令系统中,假设指令的表达式为ADD<D1>,<E1>,其中<D1>是寄存器类型的替换字符串;<E1>是通用寻址类型的替换字符串,使用指令的第1(指令字编号从0开始)指令字的最高2位和最低3位联合来表示寻址方式,故在指令系统表中在“替换字符串2的二进制码的组成部分”字段的值为00 0000 00 00 00 00 00 00 00 00 00 02 01 06 03 01 00。所以对替换字符串变量<E1>进行处理时,将指令字1中的这5位取出,作为通用寻址方式中的指令字0,而区分不同的寻址方式使用的就是这5位的值,故寻址方式代码位置字段的值为:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 00。若表示直接寻址时,第1指令字的最高2位为:11,第2指令字的最高2位为:10,则寻址方式代码编码值为000E。
B.寻址方式汇编表达式说明:
某一种寻址方式的形式化描述,将汇编表达式看作是多个可单独表示的字符串(可单独表示的字符串是指:在指令的各种形式中固定不变或能归为以上所述的8种类型之一的token)的组合,表达的形式与指令的汇编表达式类似。在会发生变化的字符串处使用字符串变量Ti来表示。
Ti可能的取值为:类型1/类型2/类型3/类型4/类型5/类型6/类型8例子:对于寻址方式d[BI+DI],(其中d表偏移量,BI和DI都是寄存器)d,BI,DI是会发生变化的,故对于这种寻址方式的汇编表达式为<T1>[<T2>+<T3>]。
C.替换字符串的二进制码/细分类别码/替换字符串类型指示字说明:
*替换字符串的二进制码指示形成某个替换字符串所依据的组合后的通用寻址方式二进制码以及扩展指令字中表示替换字符串变量所使用的二进制码所在位置,便于反汇编时从中取出相应的位。
*替换字符串类型指示字表示汇编指令中字符串与指令二进制编码之间的关系类型,根据这个类型可以使用不同的方法完成从指令的二进制码到指令汇编符的翻译,该字段为32位。
这三个字段含义及入库方法与指令系统库相同。注意的一点,在二进制码组成字段的指令字号部分若为0,表示选择组合后的通用寻址指令字(在指令系统表中的替换字符串二进制码组成中已经完成组合,例子见寻址方式判别码位置/寻址方式判别码编码值字段说明),为1表示选择基本指令字组成的后续指令字,以此类推。例子:在X86的指令系统中,用第1,2个指令字来表示通用寻址,则这两个字节组合成该表中的第0指令字,若某一种寻址方式中的某一个替换字符串使用组合指令字的第3位开始的9位,同时还使用后继指令字的第2到第3位,则二进制码组成字段中的值为:00 00 00 00 00 00 00 00 00 00 00 00 0201 02 07 00 03h。
表6寄存器表
字段名称 | 字段标识符 | 数据类型 | 可否为空 | 字段说明 |
处理器编号 | Cpu_code | Int | 否 | 内部编号 |
寄存器编号 | Reg_ID | Int | 否 | 寄存器表中唯一标识某个寄存器的编码 |
寄存器扩展编码 | Reg_excode | tinyint | 否 | 对寄存器分类的扩展编码,1个字节。见补充说明4 |
寄存器编码 | Reg_code | Smallint | 4个字节表示当寄存器在指令中出现时的编码,不足32位的用0补足高位。 | |
寄存器名 | Reg_name | Varchar(16) | 否 | 寄存器出现在指令中时的汇编符号 |
寄存器映射方式 | Reg_map | bit | 标识某一个寄存器所映射的空间类型,专用的空间或映射到存储器空间 | |
寄存器的长度 | Reg_len | tinyint | 否 | 以位为单位的寄存器的长度 |
寄存器功能描述 | Reg_func | Text | 文字形式的寄存器的功能描述 | |
寄存器固定用法 | Reg_use | Tinyint | 0表示不定,1表示输入,2表示输出 |
补充说明4
寄存器扩展编码说明:
该表中要对寄存器根据不同的汇编表达方式进行分类,并针对不同的类别进行编码。将类别编码放在扩展编码字段,并将寄存器在指令中出现时的编码寄存器编码字段,不足部分使用0来补齐,由此形成对每一条记录的唯一编码(若在指令系统中不会发生寄存器的编码重复的现象时,所有的寄存器的类别编码都可以是00h)
例子:Motorola 68000中对地址寄存器A3和数据寄存器D3在指令中出现时都用的是编码011,为了进行区分将数据寄存器的类别码编为00h,故在寄存器表中D3的编码为000000003h,而将地址寄存器类别码编码为01h,故在寄存器表中A3的编码为0100000003h。
表7代码字符转换表
字段名称 | 字段标识符 | 数据类型 | 可否为空 | 字段说明 |
处理器编号 | Cpu_code | Int | 否 | 内部编号 |
字符串编码 | String_code | Int | 否 | 该编码的是该字符串出现在指令汇编表示符中时在指令代码中对应的二进制编码。预留32位,不足部分用0来填充。 |
扩展编码 | Exten_code | Tinyint | 否 | 对字符串的分类编码 |
字符串汇编语法 | String_grammer | Varchar(16) | 否 | 该字符串在指令汇编符中的表示方法,都使用大写 |
表8中断向量信息表
字段名称 | 字段标识符 | 数据类型 | 可否为空 | 字段说明 |
处理器编号 | Cpu_code | Int | 否 | 内部编号 |
中断向量号 | Inter_number | Smallint | 否 | 在中断向量表中的顺序 |
中断向量地址 | Interrupt_addr | char(16) | 否 | 对应的某一个中断向量所在的地址 |
中断类型 | Interrupt_type | Tinyint | 否 | 中断处理的类型 |
中断向量类型编码 | Inter_vector_type | Tinyint | 否 | 见补充说明5-A |
中断向量组成指示字 | Inter_word | char(60) | 见补充说明5-B | |
中断向量长度 | Intervec_len | tinyint | 否 | 记录每个中断向量以位为单位的长度 |
中断功能 | Inter_func | Text | 给出对应中断功能的文字描述 |
补充说明5:
A.中断向量类型编码
使用一个字节来对中断向量的类型进行编码。各种处理器的中断向量有三种类型,分别对其编码如下:
00h:无效的中断向量。
01h:中断向量是中断处理程序的起始地址,并且所有的内容只是地址,如:8086的中断向量。
02h:中断向量地址处就是中断处理程序的起始。
03h:中断向量的内容不仅仅是中断处理程序的入口地址,还包括其它有关中断处理程序的信息,如ALPHA的中断向量表。
04h:表示8086的中断向量,中断向量地址=段地址×16+偏移量
B.中断向量组成指示字
表示在当前的中断向量中,那些位组成了中断处理程序的入口地址,并且按照位的高低关系将分布在中断向量中不同位置的二进制代码组合成入口地址。每个部分用3个字节表示,最高字节表示的是该部分以位为单位的长度,中间字节表示的是确定的字节编号,最后的字节表示的是在某一个字节中该部分的起始位置,即通过这三个字节定位该部分在指令二进制编码中的位置。预留30个字节来表示最多10个组成部分,若高字节为0,表示这两个字节中的内容无效。
表9特征信息表
字段名称 | 字段标识符 | 数据类型 | 可否为空 | 字段说明 |
处理器编号 | Cpu_code | Int | 否 | 内部编码 |
特征字掩码 | mask | varchar | 与指令系统信息表中的指令掩码相对应 | |
特征字1 | Character_field1 | varchar | 否 | |
特征字2 | Character_field2 | varchar | ||
特征字3(自定义特征字1) | Character_field3 | varchar | ||
特征字4(自定义特征字2) | Character_field3 | varchar | ||
是否存在检测类指令 | Test_instr | bit | 否 | |
是否存在压栈出栈指令 | Stack_instr | bit | 否 | |
是否存在子程序调用/返回指令 | Call_return | bit | 否 |
表10处理器封装类型表
字段名称 | 字段标识符 | 数据类型 | 可否为空 | 字段说明 |
处理器编号 | Cpu_code | Int | 否 | 内部编号 |
封装引脚编码 | Pack_pin_code | Tinyint | 否 | 封装引脚序号 |
引脚数 | Pin_num | Smallint | 否 | |
封装名称 | Pack_type | Varchar(20) |
本发明的有益效果:
1、本发明通过对不同型号处理器体系结构及指令系统特征的分析和综合,提出一种能够将静态描述表扩展成统一表示主流处理器的处理器结构特征库和指令系统描述模板,以便用于通用的汇编和反汇编模块,实现对未知指令系统的编译工作,这样一来,只需提供开放式的处理器信息数据库,通过对该处理器信息数据库进行管理和维护,分析工具也就具备了用户可扩展性。
2、本发明采用多层三元组嵌套表Table构建处理器结构特征库和指令系统描述模板,多层三元组嵌套表Table表示为{<Tp1,Ts1,Ti1>,<Tp2,Ts2,Ti2>,……,<Tpn,Tsn,Tin>},每个三元组<Tpn,Tsn,Tin>代表一款处理器,处理器标识信息表Tp对处理器进行分类、索引和筛选,处理器结构信息表Ts提供寄存器结构信息、中断结构信息、复位地址信息和存储空间分配信息,处理器的指令系统表Ti提供机器编码、汇编表达式和两者之间的映射关系,这种有序的表示方式有利于提高汇编和反汇编模块的编译效率。
(四)、具体实施方式:
实施例一:
处理器标识信息表Tp含有处理器分类信息表和处理器封装类型表。
处理器分类信息表含有处理器编号(1)、处理器名(8086)、处理器类型(mpu)、处理器生产厂家(Intel)、处理器系列号(8086)、处理器位数(16)、封装类型(DIP);
处理器封装类型表含有处理器编号(1)、封装引脚编码(1)、引脚数(40)、封装名称(无)。
处理器结构信息表Ts含有指令基本信息表、寄存器信息表、中断结构表、存储空间配置表、处理器复位地址表。
指令基本信息表含有指令条数(163)、基本的指令字宽(8)、最小指令长度(8)、最大指令长度(无)、指令操作数最大个数(2);
寄存器信息表表示为<TREG1,TREG2,……,TREGk>,其中k为大于等于1的自然数,其中一个TREGk含有寄存器名(AH)、寄存器的长度(8)、寄存器编码(4)、寄存器扩展编码(2);
中断结构表含有中断向量数(5)、中断向量长度(32)、中断向量表基地址(0000000000000000)、是否为浮动中断向量表(否)、中断向量表是否有效(是)、中断向量表,中断向量表表示为<INTADD1,INTADD2,……,INTADDr>,其中r为大于等于1的自然数,任一个INTADDr含有中断向量号(0)、中断向量地址(0000000000000000)、中断类型(1)、中断向量组成指示字(无)、中断功能(除法错中断);
存储空间配置表表示为<空间配置信息表、空间分配表1,……,空间分配表m>,其中m为大于等于1的自然数,所述空间配置信息表含有数据总线宽度(16)、地址总线宽度(20)、存储器编址方式(字节编址)、可寻址的存储器大小(16)、内部存储空间最大容量(1048576)、外部存储空间最大容量(524280)、内部存储空间分段数(4)、外部存储空间分段数(无)、内部端口数量(无)、内部端口宽度(无)、外部端口数量(无)、外部端口宽度(无),任一空间分配表m含有子存储空间名(存储器)、子存储空间起始地址(0000000000000000)、子空间大小(1048576);
处理器复位地址表表示为<处理器复位入口地址1(00000000000FFFF0)>;
处理器的指令系统表Ti含有指令的机器编码、汇编表达和从机器编码到汇编表达的映射关系。
指令的机器编码表示为<机器码字段1,机器码字段2>,机器码字段1含有第1指令字二进制编码(55)、第1指令字掩码(255)、可变部分相关二进制码位置,机器码字段2含有第2指令字二进制编码(0)、第2指令字掩码(0)、可变部分相关二进制码位置;
汇编表达表示为<汇编符字段1>,汇编符字段1含有指令汇编符(AAA)、替换字符串1的二进制编码(无)、细分类别码1(无)。
表1处理器分类信息表
处理器编号:1; 处理器名:8086; 处理器类型:mpu;
处理器生产厂家:Intel;处理器系列号:8086;处理器位数:16;
封装类型:DIP;
表2处理器基本结构信息表
指令条数:163; 基本的指令字宽:8; 最小指令长度:8;
最大指令长度:NULL;指令操作数最大个数:2;中断向量数:5;
中断向量长度:32; 中断向量表基地址:0000000000000000;
是否为浮动中断向量表:0(代表否); 中断向量表是否有效:1(代表是);
数据总线宽度:16; 地址总线宽度:20;可寻址的存储器大小:16;
存储器编址方式:8(字节编址); 内部存储空间最大容量:1048576;
内部存储空间分段数:4; 外部存储空间最大容量:524280;
外部存储空间分段数:NULL; 内部端口数量:NULL;
内部端口宽度:NULL; 外部端口数量:NULL;
外部端口宽度:NULL;处理器复位入口地址1:00000000000FFFF0;
处理器复位入口地址2:NULL; 处理器复位入口地址3:NULL;
处理器复位入口地址4:NULL; 处理器复位入口地址5:NULL;
处理器复位入口地址6:NULL; 处理器复位入口地址7:NULL;
处理器复位入口地址8:NULL;
表3存储空间分配表
子存储空间名:存储器; 子存储空间起始地址:0000000000000000;
子空间大小:1048576;
表4指令系统信息表
指令汇编符:AAA; 第1指令字二进制编码:55;
第1指令字掩码:255; 第2指令字二进制编码:0;
第2指令字掩码:0; 第3指令字二进制编码:NULL;
第3指令字掩码:NULL; 第4指令字二进制编码:NULL;
第4指令字掩码:NULL; 第5指令字二进制编码:NULL;
第5指令字掩码:NULL; 第6指令字二进制编码:NULL;
第6指令字掩码:NULL; 第7指令字二进制编码:NULL
第7指令字掩码:NULL; 第8指令字二进制编码:NULL;
第8指令字掩码:NULL; 替换字符串1的二进制码:NULL;
细分类别码1:NULL; 替换字符串2的二进制码:NULL;
细分类别码2:NULL; …………
替换字符串16的二进制码:NULL;细分类别码16:NULL;
表5通用寻址类型表
替换字符串1的二进制码:NULL;细分类别码1:NULL;
…………
替换字符串8的二进制码:NULL;细分类别码8:NULL;
表6寄存器表
寄存器扩展编码:2; 寄存器编码:4; 寄存器名:AH;
寄存器映射方式:NULL;寄存器的长度:8;
表8中断向量信息表
中断向量号:0; 中断向量地址:0000000000000000;
中断类型:1; 中断向量类型:4;中断向量组成指示字:NULL;
中断向量长度:32;中断功能:除法错中断;
表10处理器封装类型表
封装引脚编码:1; 引脚数:40; 封装名称:NULL;
实施例二:
处理器标识信息表Tp含有处理器分类信息表和处理器封装类型表。处理器分类信息表含有处理器编号(2)、处理器名(MC68000)、处理器类型(mcu)、处理器生产厂家(Motorola)、处理器系列号(68030)、处理器位数(32)、封装类型(FC);
处理器封装类型表含有处理器编号(2)、封装引脚编码(1)、引脚数(132)、封装名称(FC)。
处理器结构信息表Ts含有指令基本信息表、寄存器信息表、中断结构表、存储空间配置表、处理器复位地址表。
指令基本信息表含有指令条数(102)、基本的指令字宽(16)、最小指令长度(16)、最大指令长度(80)、指令操作数最大个数(无);
寄存器信息表表示为<TREG1,TREG2,……,TREGk>,其中k为大于等于1的自然数,其中一个TREGk含有寄存器名(D0)、寄存器的长度(32)、寄存器编码(0)、寄存器扩展编码(12);
中断结构表含有中断向量数(256)、中断向量长度(32)、中断向量表基地址(无)、是否为浮动中断向量表(是)、中断向量表是否有效(是)、中断向量表,中断向量表表示为<INTADD1,INTADD2,……,INTADDr>,其中r为大于等于1的自然数,任一个INTADDr含有中断向量号(0)、中断向量地址(0000000000000000)、中断类型(0)、中断向量组成指示字(无)、中断功能(复位:内部堆栈指针);
存储空间配置表表示为<空间配置信息表、空间分配表1,……,空间分配表m>,其中m为大于等于1的自然数,所述空间配置信息表含有数据总线宽度(16)、地址总线宽度(32)、存储器编址方式(字节编址)、可寻址的存储器大小(无)、内部存储空间最大容量(无)、外部存储空间最大容量(无)、内部存储空间分段数(无)、外部存储空间分段数(无)、内部端口数量(无)、内部端口宽度(无)、外部端口数量(无)、外部端口宽度(无),任一空间分配表m含有子存储空间名(管理程序空间)、子存储空间起始地址(0000000000000000)、子空间大小(无);
处理器复位地址表表示为<处理器复位入口地址1(0000000000000000),处理器复位入口地址2(0000000000000004)>;
处理器的指令系统表Ti含有指令的机器编码、汇编表达和从机器编码到汇编表达的映射关系。
指令的机器编码表示为<机器码字段1,机器码字段2>,机器码字段1含有第1指令字二进制编码(49408)、第1指令字掩码(61944)、可变部分相关二进制码位置,机器码字段2含有第2指令字二进制编码(0)、第2指令字掩码(0)、可变部分相关二进制码位置;
汇编表达表示为<汇编符字段1,汇编符字段2>,汇编符字段1含有指令汇编符(ABCD<d1>,<e1>)、替换字符串1的二进制编码(000000000000000000000000000000030000)、细分类别码1(12),汇编符字段2含有指令汇编符(ABCD<d1>,<e1>)、替换字符串2的二进制编码(000000000000000000000000000000030009)、细分类别码2(12)。
表1处理器分类信息表
处理器编号:2; 处理器名:MC68000;处理器类型:mcu;
处理器生产厂家:Motorola; 处理器系列号:68030;
处理器位数:32; 封装类型:FC;
表2处理器基本结构信息表
指令条数:102; 基本的指令字宽:16; 最小指令长度:16;
最大指令长度:80; 指令操作数最大个数:NULL;
中断向量数:256; 中断向量长度:32; 中断向量表基地址:NULL;
是否为浮动中断向量表:1(代表是); 中断向量表是否有效:1(代表是);
数据总线宽度:16;地址总线宽度:32; 可寻址的存储器大小:NULL;
存储器编址方式:8(字节编址); 内部存储空间最大容量:NULL;
内部存储空间分段数:NULL; 外部存储空间最大容量:NULL;
外部存储空间分段数:NULL; 内部端口数量:NULL;
内部端口宽度:NULL; 外部端口数量:NULL;
外部端口宽度:NULL; 处理器复位入口地址1:0000000000000000;
处理器复位入口地址2:0000000000000004;
处理器复位入口地址3:NULL; 处理器复位入口地址4:NULL;
处理器复位入口地址5:NULL; 处理器复位入口地址6:NULL;
处理器复位入口地址7:NULL; 处理器复位入口地址8:NULL;
表3存储空间分配表
子存储空间名:管理程序空间;子存储空间起始地址:0000000000000000;子空间大小:NULL;
表4指令系统信息表
指令汇编符:ABCD<d1>,<e1>;第1指令字二进制编码:49408;
第1指令字掩码:61944; 第2指令字二进制编码:0;
第2指令字掩码:0; 第3指令字二进制编码:NULL;
第3指令字掩码:NULL; 第4指令字二进制编码:NULL;
第4指令字掩码:NULL; 第5指令字二进制编码:NULL;
第5指令字掩码:NULL; 第6指令字二进制编码:NULL;
第6指令字掩码:NULL; 第7指令字二进制编码:NULL;
第7指令字掩码:NULL; 第8指令字二进制编码:NULL;
第8指令字掩码:NULL;
替换字符串1的二进制码:000000000000000000000000000000030000;
细分类别码1:12;
替换字符串2的二进制码:000000000000000000000000000000030009;
细分类别码2:12;
…………
替换字符串16的二进制码:NULL;细分类别码16:NULL;
表5通用寻址类型表
替换字符串1的二进制码:000000000000000000000000000000030000;
细分类别码1:12;…………
替换字符串8的二进制码:NULL;细分类别码8:NULL;
表6寄存器表
寄存器扩展编码:12; 寄存器编码:0; 寄存器名:D0;
寄存器映射方式:NULL;寄存器的长度:32;
表8中断向量信息表
中断向量号:0; 中断向量地址:0000000000000000;
中断类型:0; 中断向量类型:1;
中断向量组成指示字:NULL;中断向量长度:32;
中断功能:复位:内部堆栈指针;
表10处理器封装类型表
封装引脚编码:1;引脚数:132;封装名称:FC;
实施例三:
处理器标识信息表Tp含有处理器分类信息表和处理器封装类型表。处理器分类信息表含有处理器编号(3)、处理器名(TMS320c5x)、处理器类型(dsp)、处理器生产厂家(Texas Instruments)、处理器系列号(C52)、处理器位数(16)、封装类型(QFP);
处理器封装类型表含有处理器编号(3)、封装引脚编码(1)、引脚数(100)、封装名称(QFP)。
处理器结构信息表Ts含有指令基本信息表、寄存器信息表、中断结构表、存储空间配置表、处理器复位地址表。
指令基本信息表含有指令条数(133)、基本的指令字宽(16)、最小指令长度(16)、最大指令长度(32)、指令操作数最大个数(无);
寄存器信息表表示为<TREG1,TREG2,……,TREGk>,其中k为大于等于1的自然数,其中一个TREGk含有寄存器名(AR0)、寄存器的长度(16)、寄存器编码(0)、寄存器扩展编码(8);
中断结构表含有中断向量数(64)、中断向量长度(16)、中断向量表基地址(无)、是否为浮动中断向量表(是)、中断向量表是否有效(是)、中断向量表,中断向量表表示为<INTADD1,INTADD2,……,INTADDr>,其中r为大于等于1的自然数,任一个INTADDr含有中断向量号(0)、中断向量地址(0000000000000000)、中断类型(0)、中断向量组成指示字(无)、中断功能(外部不可屏蔽的复位中断);
存储空间配置表表示为<空间配置信息表、空间分配表1,……,空间分配表m>,其中m为大于等于1的自然数,所述空间配置信息表含有数据总线宽度(16)、地址总线宽度(16)、存储器编址方式(字编址)、可寻址的存储器大小(无)、内部存储空间最大容量(0)、外部存储空间最大容量(无)、内部存储空间分段数(无)、外部存储空间分段数(无)、内部端口数量(无)、内部端口宽度(无)、外部端口数量(无)、外部端口宽度(无),任一空间分配表m含有子存储空间名(用户数据空间)、子存储空间起始地址(无)、子空间大小(无);
处理器复位地址表表示为<处理器复位入口地址1(0000000000000000)>;
处理器的指令系统表Ti含有指令的机器编码、汇编表达和从机器编码到汇编表达的映射关系。
指令的机器编码表示为<机器码字段1,机器码字段2>,机器码字段1含有第1指令字二进制编码(49416)、第1指令字掩码(61944)、可变部分相关二进制码位置,机器码字段2含有第2指令字二进制编码(0)、第2指令字掩码(0)、可变部分相关二进制码位置;
汇编表达表示为<汇编符字段1,汇编符字段2>,汇编符字段1含有指令汇编符(ABCD-(<d1>),-(<e1>))、替换字符串1的二进制编码(000000000000000000000000000000030000)、细分类别码1(13),汇编符字段2含有指令汇编符(ABCD-(<d1>),-(<e1>))、替换字符串2的二进制编码(000000000000000000000000000000030009)、细分类别码2(13)。
表1处理器分类信息表
处理器编号:3; 处理器名:TMS320c5x; 处理器类型:dsp;
处理器生产厂家:Texas Instruments; 处理器系列号:C52;
处理器位数:16; 封装类型:QFP;
表2处理器基本结构信息表
指令条数:133; 基本的指令字宽:16;最小指令长度:16;
最大指令长度:32;指令操作数最大个数:NULL;
中断向量数:64; 中断向量长度:16;
中断向量表基地址:NULL; 是否为浮动中断向量表:1(代表是);
中断向量表是否有效:1(代表是); 数据总线宽度:16;
地址总线宽度:16; 可寻址的存储器大小:NULL;
存储器编址方式:16(字编址); 内部存储空间最大容量:0;
内部存储空间分段数:NULL; 外部存储空间最大容量:NULL;
外部存储空间分段数:NULL; 内部端口数量:NULL;
内部端口宽度:NULL; 外部端口数量:NULL;
外部端口宽度:NULL; 处理器复位入口地址1:0000000000000000;
处理器复位入口地址2:NULL; 处理器复位入口地址3:NULL;
处理器复位入口地址4:NULL; 处理器复位入口地址5:NULL;
处理器复位入口地址6:NULL; 处理器复位入口地址7:NULL;
处理器复位入口地址8:NULL;
表3存储空间分配表
子存储空间名:用户数据空间; 子存储空间起始地址:NULL;
子空间大小:NULL;
表4指令系统信息表
指令汇编符:ABCD-(<d1>),-(<e1>);第1指令字二进制编码:49416;
第1指令字掩码:61944; 第2指令字二进制编码:0;
第2指令字掩码:0; 第3指令字二进制编码:NULL;
第3指令字掩码:NULL; 第4指令字二进制编码:NULL;
第4指令字掩码:NULL; 第5指令字二进制编码:NULL;
第5指令字掩码:NULL; 第6指令字二进制编码:NULL;
第6指令字掩码:NULL; 第7指令字二进制编码:NULL;
第7指令字掩码:NULL; 第8指令字二进制编码:NULL;
第8指令字掩码:NULL;
替换字符串1的二进制码:000000000000000000000000000000030000;
细分类别码1:13;
替换字符串2的二进制码:000000000000000000000000000000030009;
细分类别码2:13;…………
替换字符串16的二进制码:NULL;细分类别码16:NULL;
表5通用寻址类型表
替换字符串1的二进制码:000000000000000000000000000000030004;
细分类别码1:16;…………
替换字符串8的二进制码:NULL;细分类别码8:NULL;
表6寄存器表
寄存器扩展编码:8; 寄存器编码:0; 寄存器名:AR0;
寄存器映射方式:NULL;寄存器的长度:16;
表8中断向量信息表
中断向量号:0; 中断向量地址:0000000000000000;
中断类型:0; 中断向量类型:1;
中断向量组成指示字:NULL;中断向量长度:16;
中断功能:外部不可屏蔽的复位中断;
表10处理器封装类型表
封装引脚编码:1;引脚数:100;封装名称:QFP。
Claims (8)
1、一种基于多维可变描述表的处理器结构与指令系统表示方法,其特征是:采用多层三元组嵌套表Table构建处理器结构特征库和指令系统描述模板,多层三元组嵌套表Table含有处理器标识信息表Tp、与Tp对应或匹配的处理器结构信息表Ts、与Tp对应或匹配的处理器的指令系统表Ti,多层三元组嵌套表Table表示为{<Tp1,Ts1,Ti1>,<Tp2,Ts2,Ti2>,......,<Tpn,Tsn,Tin>},其中n为大于等于1的自然数,每个三元组<Tpn,Tsn,Tin>代表一款处理器,处理器标识信息表Tp对处理器进行分类、索引和筛选,处理器结构信息表Ts提供寄存器结构信息、中断结构信息、复位地址信息和存储空间分配信息,处理器的指令系统表Ti提供机器编码、汇编表达式和两者之间的映射关系。
2、根据权利要求1所述的基于多维可变描述表的处理器结构与指令系统表示方法,其特征是:所述多层三元组嵌套表Table中的数据从处理器信息数据库中提取,对处理器信息数据库可进行管理和维护,管理和维护含有登录、数据录入、数据查询、数据修改、数据引用、数据输出和系统维护。
3、根据权利要求2所述的基于多维可变描述表的处理器结构与指令系统表示方法,其特征是:所述处理器信息数据库含有处理器分类信息表、处理器基本结构信息表、存储空间分配表、指令系统信息表、通用寻址类型表、寄存器表、代码字符转换表、中断向量信息表、特征信息表、处理器封装类型表。
4、根据权利要求1所述的基于多维可变描述表的处理器结构与指令系统表示方法,其特征是:所述处理器标识信息表Tp含有处理器分类信息表和处理器封装类型表,处理器分类信息表含有处理器编号、处理器名、处理器类型、处理器生产厂家、处理器系列号、处理器位数、封装类型,处理器封装类型表含有处理器编号、封装引脚编码、引脚数、封装名称。
5、根据权利要求1所述的基于多维可变描述表的处理器结构与指令系统表示方法,其特征是:所述处理器结构信息表Ts含有指令基本信息表、寄存器信息表、中断结构表、存储空间配置表、处理器复位地址表。
6、根据权利要求5所述的基于多维可变描述表的处理器结构与指令系统表示方法,其特征是:所述指令基本信息表含有指令条数、基本的指令字宽、最小指令长度、最大指令长度、指令操作数最大个数;
所述寄存器信息表表示为<TREG1,TREG2,......,TREGk>,其中k为大于等于1的自然数,任一个TREGk含有寄存器名、寄存器的长度、寄存器编码、寄存器扩展编码,每个TREGk代表一个寄存器;
所述中断结构表含有中断向量数、中断向量长度、中断向量表基地址、是否为浮动中断向量表、中断向量表是否有效、中断向量表,所述中断向量表表示为<INTADD1,INTADD2,......,INTADDr>,其中r为大于等于1的自然数,任一个INTADDr含有中断向量号、中断向量地址、中断类型、中断向量组成指示字、中断功能;
所述存储空间配置表表示为<空间配置信息表、空间分配表1,......,空间分配表m>,其中m为大于等于1的自然数,所述空间配置信息表含有数据总线宽度、地址总线宽度、存储器编址方式、可寻址的存储器大小、内部存储空间最大容量、外部存储空间最大容量、内部存储空间分段数、外部存储空间分段数、内部端口数量、内部端口宽度、外部端口数量、外部端口宽度,任一空间分配表m含有子存储空间名、子存储空间起始地址、子空间大小,每个空间分配表m对应一个存储空间或IO空间;
所述处理器复位地址表表示为<处理器复位入口地址1,处理器复位入口地址2,......,处理器复位入口地址p>,其中p为大于等于1且小于等于8的自然数,处理器复位入口地址p是处理器目标代码的初始入口地址。
7、根据权利要求1所述的基于多维可变描述表的处理器结构与指令系统表示方法,其特征是:所述处理器的指令系统表Ti含有指令的机器编码、汇编表达和从机器编码到汇编表达的映射关系。
8、根据权利要求7所述的基于多维可变描述表的处理器结构与指令系统表示方法,其特征是:所述指令的机器编码表示为<机器码字段1,机器码字段2,......,机器码字段q>,任一机器码字段q含有第q指令字二进制编码、第q指令字掩码、可变部分相关二进制码位置,其中q为大于等于1且小于等于8的自然数;
所述汇编表达表示为<汇编符字段1,汇编符字段2,......,汇编符字段s>,任一汇编符字段s含有指令汇编符、替换字符串s的二进制编码、细分类别码s,其中s为大于等于1且小于等于16的自然数;
从机器编码到汇编表达的映射关系含有字符串映射、寄存器映射、数值映射;
字符串映射含有汇编字符串、机器二进制编码、细分类型及编码;寄存器映射含有寄存器名、寄存器编码、寄存器扩展编码;
数值映射根据替换字符串的类型直接完成数值转换。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810140939A CN101645005A (zh) | 2008-08-06 | 2008-08-06 | 基于多维可变描述表的处理器结构与指令系统表示方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810140939A CN101645005A (zh) | 2008-08-06 | 2008-08-06 | 基于多维可变描述表的处理器结构与指令系统表示方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101645005A true CN101645005A (zh) | 2010-02-10 |
Family
ID=41656902
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810140939A Pending CN101645005A (zh) | 2008-08-06 | 2008-08-06 | 基于多维可变描述表的处理器结构与指令系统表示方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101645005A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102968304A (zh) * | 2012-11-27 | 2013-03-13 | 武汉大学 | 一种实现反汇编自适应反馈调节机制的方法 |
CN104063259A (zh) * | 2014-06-05 | 2014-09-24 | 中国人民解放军信息工程大学 | 基于程序文法的指令集类型识别方法 |
TWI465920B (zh) * | 2011-12-30 | 2014-12-21 | Intel Corp | 結構存取處理器、方法、系統及指令 |
CN108804027A (zh) * | 2018-04-10 | 2018-11-13 | 四川中电昆辰科技有限公司 | 单比特定位时隙分配表的压缩存储方法 |
CN109214149A (zh) * | 2018-09-11 | 2019-01-15 | 中国人民解放军战略支援部队信息工程大学 | 一种mips固件基地址自动化检测方法 |
CN111258644A (zh) * | 2018-11-30 | 2020-06-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111399852A (zh) * | 2020-03-11 | 2020-07-10 | 电子科技大学 | 一种基于dsp处理器特点的指令集静态反汇编方法 |
CN111722916A (zh) * | 2020-06-29 | 2020-09-29 | 长沙新弘软件有限公司 | 一种通过映射表处理msi-x中断的方法 |
CN113767371A (zh) * | 2019-05-10 | 2021-12-07 | 国际商业机器公司 | 用于高性能向量处理的地址生成 |
-
2008
- 2008-08-06 CN CN200810140939A patent/CN101645005A/zh active Pending
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI465920B (zh) * | 2011-12-30 | 2014-12-21 | Intel Corp | 結構存取處理器、方法、系統及指令 |
CN102968304A (zh) * | 2012-11-27 | 2013-03-13 | 武汉大学 | 一种实现反汇编自适应反馈调节机制的方法 |
CN104063259A (zh) * | 2014-06-05 | 2014-09-24 | 中国人民解放军信息工程大学 | 基于程序文法的指令集类型识别方法 |
CN108804027B (zh) * | 2018-04-10 | 2021-06-08 | 四川中电昆辰科技有限公司 | 单比特定位时隙分配表的压缩存储方法 |
CN108804027A (zh) * | 2018-04-10 | 2018-11-13 | 四川中电昆辰科技有限公司 | 单比特定位时隙分配表的压缩存储方法 |
CN109214149A (zh) * | 2018-09-11 | 2019-01-15 | 中国人民解放军战略支援部队信息工程大学 | 一种mips固件基地址自动化检测方法 |
CN109214149B (zh) * | 2018-09-11 | 2020-04-21 | 中国人民解放军战略支援部队信息工程大学 | 一种mips固件基地址自动化检测方法 |
CN111258644A (zh) * | 2018-11-30 | 2020-06-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258644B (zh) * | 2018-11-30 | 2022-08-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN113767371A (zh) * | 2019-05-10 | 2021-12-07 | 国际商业机器公司 | 用于高性能向量处理的地址生成 |
CN113767371B (zh) * | 2019-05-10 | 2023-04-14 | 国际商业机器公司 | 用于高性能向量处理的地址生成的方法 |
CN111399852A (zh) * | 2020-03-11 | 2020-07-10 | 电子科技大学 | 一种基于dsp处理器特点的指令集静态反汇编方法 |
CN111399852B (zh) * | 2020-03-11 | 2022-08-16 | 电子科技大学 | 一种基于dsp处理器特点的指令集静态反汇编方法 |
CN111722916A (zh) * | 2020-06-29 | 2020-09-29 | 长沙新弘软件有限公司 | 一种通过映射表处理msi-x中断的方法 |
CN111722916B (zh) * | 2020-06-29 | 2023-11-14 | 长沙新弘软件有限公司 | 一种通过映射表处理msi-x中断的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101645005A (zh) | 基于多维可变描述表的处理器结构与指令系统表示方法 | |
CN101299185B (zh) | 一种基于cisc结构的微处理器结构 | |
CN100524204C (zh) | 处理器 | |
CN103430148B (zh) | 用于元件利用的状态分组 | |
CN100555225C (zh) | 一种支持x86虚拟机的risc处理器装置及方法 | |
CN104011647B (zh) | 浮点舍入处理器、方法、系统和指令 | |
CN104011673B (zh) | 向量频率压缩指令 | |
CN103547999A (zh) | 利用专用元件实施有限状态机 | |
CN104011645B (zh) | 用于产生其中在连续位置中的整数相差恒定整数跨度且最小整数从零偏移整数偏移量的整数序列的处理器、方法、系统和含有指令的介质 | |
CN102163143B (zh) | 一种实现值关联间接跳转预测的方法 | |
CN104011657A (zh) | 用于向量计算和累计的装置和方法 | |
CN103547998A (zh) | 用于编译正则表达式的方法和设备 | |
CN101763247B (zh) | 利用可编程转移表快速转移的系统和方法 | |
CN104081336A (zh) | 用于检测向量寄存器内的相同元素的装置和方法 | |
CN103329097A (zh) | 工具生成器 | |
CN109213524A (zh) | 用于难预测分支的预测器 | |
CN102681821B (zh) | 基于C-SKY v2指令集的二进制工具集设计方法 | |
CN107833153A (zh) | 一种基于k‑means聚类的电网负荷缺失数据补全方法 | |
CN109997109A (zh) | 具有提取提前滞后的流引擎 | |
CN105044653A (zh) | 一种智能电表的软件一致性检测方法 | |
CN101211256A (zh) | 一种专用双流水线risc指令系统及其操作方法 | |
CN101256546A (zh) | 32位微处理器 | |
Fauth | Beyond tool-specific machine descriptions | |
CN102156636B (zh) | 一种实现值关联间接跳转预测的装置 | |
KR101503620B1 (ko) | 지능형 아키텍처 생성기 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20100210 |