本帖最后由 吾要单片机 于 2017-5-20 10:24 编辑
本《酷能指令集》是一种全新的计算机指令集,它是基于本人的3项专利技术设计而成的,其具有新颖、高效、高代码密度的优点,目前基于本《酷能指令集》的CPU设计已经完成,仿真结果表明达到了专利所描述的效果,非常满意。在介绍本指令集之前,首先介绍与之相关的专利技术。(先介绍已经公开的2项)
第一项专利技术:专利号:201310153746.1,专利名:《一种在计算机数据处理指令中附加跳转功能的方法及CPU模块》
这项专利的主要思想是:在计算机数据处理指令(包含数据转送指令,以下同)中增加设置执行的条件码、反条件码和跳转矢量,从而使得数据处理指令不再是单一的数据处理,而且具备跳转能力,其好处是提高程序的密度和执行效率。具体内容参见专利的说明书。
通过上述技术方法实施后数据处理指令具有跳转功能了,在此我称之为具有跳转功能的数据处理指令。这些具有跳转功能的数据处理指令的汇编格式如下所示:
操作码<条件码> [操作数1] , [操作数2], [操作数3] ,[E][JMP 跳转标号]
其中E是反条件码,跳转矢量是相对PC的跳转矢量。
注意观察该汇编指令格式,我们发现比现在传统的数据处理指令指令多出了“[E][JMP 跳转标号]”字段,这个字段就是用于描述跳转功能。其中E是反条件码助记符,JMP是立即跳转助记符。如果E被隐去,则表示同条件跳转,即附加的跳转条件和操作码后缀的条件码相同;如果E被显现,则表示反条件跳转,即附加的跳转条件和操作码后缀的条件码相反。
汇编指令格式:操作符<cond> 操作数1,操作数2,..,[E][JMP #v]
其中: cond------条件码,其意思是:如果满足条件码的要求,则执行操作符定义的操作;如果没有条件码,其意思是:无条件执行操作符定义的操作。
E—-------反条件码,意思是否则(Else)。
JMP #v---意思是立即跳转#v条指令。
例如: SUB<cond> Rd, Rn, Rj, [E][JMP #v_6]
需要特别指出的是:有些数据处理指令是无条件执行,没有条件码、反条件码、跳转矢量。
实际应用举例如下:
SUBEQ R3, R1, R2, EJMP lab_1; //如果相等,则执行R3=R1-R2;否则立即跳到lab_1处。属于反条件跳转。这种情况下它顶得3条MIPS指令。
SUBEQ R3, R1, R2, JMP lab_1; //如果相等,则执行R3=R1-R2,并且立即跳到lab_1处。属于同条件跳转。这种情况下它顶得3条MIPS指令。
SUB R3, R1, R2; //无条件执行R3=R1-R2。没有跳转功能,属于反条件跳转。这种情况下它只顶得1条MIPS指令。
SUB R3, R1, R2, JMP lab_1; // 无条件执行R3=R1-R2,并且立即跳到lab_1处。属于同条件跳转。这种情况下它顶得2条MIPS指令。
SUBRE R3, R1, R2, JMP lab_1; //无条件执行RC=RC-1的操作,如果Z==1&&RC>0,则执行R3=R1-R2,并且立即跳到lab_1处。属于同条件跳转。这种情况下有最高效率,它顶得5条MIPS指令!
从上面可以看出:在数据处理指令(含数据转送指令)中附加执行条件码、反条件码和跳转矢量后,可以使得数据处理指令不但有条件执行,而且具有跳转功能。这种指令的效率显然高于现在主流的RISC指令,不过由于附加的跳转矢量位数有限(32位指令集是6位,16位指令集是7位),所以跳转的范围都比较小,属于短跳转。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
寄存器介绍:寄存器的宽度是32位,所以本CPU是32位CPU。
R0为零寄存器,读出总是0。
当CPU处于16位指令模式时,其通用寄存器为R0—R15,R16(HR0)--R31(HR15)用特别的指令访问。
当CPU处于32位指令模式时,其通用寄存器为R0—R31。
其中:R1-----UMAC指令的目的寄存器。
R26---LO寄存器,用于存贮乘法或乘加的64位结果的低32位,或者用于存贮32位除法运算的商。
R27---HI寄存器,用于存贮乘法或乘加的64位结果的高32位,或者用于存贮32位除法运算的余数。
R29---INT,即中断号等信息。
R30---SP寄存器,即推栈指针。当CPU处于用户态时是PSP;而当CPU处于管理态时是PSP或MSP,由PSR.P选择。
R31---LR寄存器,即子程序返回链接寄存器。
另外,CPU设置2个系统控制寄存器,它们定义如下:
PC寄存器,即程序计数器。
PSR寄存器,即程序状态寄存器,里面有程序状态标志位以及系统状态和控制信息。
一周热门 更多>