
实现灵活且低成本的指令替换方法及装置的制作方法.docx
3页实现灵活且低成本的指令替换方法及装置的制作方法专利名称:实现灵活且低成本的指令替换方法及装置的制作方法技术领域:本发明涉及指令替换技术,特别涉及一种实现灵活且低成本的指令替换方法及装置背景技术:中央处理器(CPU, Computer Progress Unit)执行指令的过程可以简述为如下过程取指令单元从程序空间取指令、并传输给译码单元;译码单元执行译码、并将译码结果传输给执行单元;执行单元执行指令在CPU芯片制成后,指令固化在CPU芯片的掩膜只读存储器(MASK ROM7Read OnlyMemory)中,有时需要对上述指令进行替换,现有技术中包括以下三种指令替换的方式 第一、图I为现有技术中第一种指令替换方法的示意图以Intel 80251为例,假设需要将地址为0ff43f2h开始的指令MOV sp, #80h替换为MOV sp, #89h需要直接修改MASK ROM中的指令,并重新流片,成本较高且浪费时间第二、图2为现有技术中第二种指令替换方法的示意图仍以Intel 80251为例,假设需要修改函数functionl图2中斜线阴影所示区域为修改前的函数functionl,横线阴影所示区域为修改后的函数functionl。
假设所有函数都可能出错,将所有函数的入口地址存放在函数入口地址表中,这个表存放在一次性编程存储器(0ΤΡ,One Time Programming)、外扩的只读存储器(R0M,Read Only Memery)或闪存(FLASH ROM)中,使用指令ecall OWRj执行函数调用,其中WRj指的是一个函数入口地址当需要修改函数functionl时,修改functionl在函数地址入口表中的函数入口地址,并新增修改后的functionl函数与这个新的函数入口地址对应但在实际的CPU芯片中,函数写错的概率是非常小的,只有少数的函数代码有错,因此这种指令替换的方式浪费了大量的空间存放函数入口地址表,并且目前的有些C语言编译器还无法支持这种指令替换方式第三、图3为现有技术中第三种指令替换方法的流程图,该流程包括步骤301 :判断当前是否满足指令替换条件,如果是,则产生中断,然后执行步骤302 ;否则执行步骤303步骤302 :调用中断服务程序到中断向量表,执行代码替换,然后执行步骤303步骤303 :对地址线上当前地址中的指令译码并执行预先设置修改点位置,如果当前地址与某个修改点位置匹配,则产生一个中断,在中断服务程序中实现代码替换,这种指令替换方式需要修改中断控制器,并且会与不带中断请求的中断源(通常包括软件调制中断、异常中断和非可屏蔽中断)产生冲突。
发明内容本发明提供一种实现灵活且低成本的指令替换方法,在现有CPU的结构不作大改动、且不改变编译器的前提下,使用该方法可以灵活且低成本的替换MASK ROM中的单条指令或一系列指令的组合本发明提供一种实现灵活且低成本的指令替换装置,在现有CPU的结构不作大改动、且不改变编译器的前提下,该装置可以灵活且低成本的替换MASK ROM中的单条指令或一系列指令的组合本发明的技术方案是这样实现的一种实现灵活且低成本的指令替换方法,关键在于,该方法包括A、判断当前是否满足指令替换条件,如果是,替换从地址线上当前地址中读出的指令操作码,然后执行步骤B ;否则执行步骤C ;B、检测从当前地址中读出的指令操作码是否指示陷阱指令,如果是,执行预设地址中的替换代码,并结束流程;否则执行步骤C ;C、对所述当前地址中的指令译码并执行一种实现灵活且低成本的指令替换装置,关键在于,该装置包括代码替换单元、陷阱指令检测单元和陷阱指令执行单元;所述代码替换单元,用于判断当前是否满足指令替换条件,如果是,替换从地址线上当前地址中读出的指令操作码,否则将所述当前地址中的指令输出给译码单元;所述陷阱指令检测单元,用于检测代码替换单元处理后的指令中的指令操作码是否指示陷阱指令;所述陷阱指令执行单元,用于在所述陷阱指令检测单元得出的检测结果为是时,执行预设地址中的替换代码,在所述陷阱指令检测单元得出的检测结果为否时,将所述当前地址中的指令输出给译码单元。
可以看出,本发明中实现灵活且低成本的指令替换方法中,在当前满足指令替换条件时,替换指令操作码对于那些仅需替换指令操作码的指令,后续继续进行译码和执行即可对于那些替换内容较多的指令,设置了一种陷阱指令,当替换指令操作码后的指令为陷阱指令时,执行预设地址中的替换代码,间接实现了指令替换使用本发明中的指令替换方法,可以在现有CPU在结构不作大改动、且不改变编译器的前提下,灵活替换固化在CPU的MASK ROM中的单条指令或一系列指令的组合,并且由于无需修改MASK ROM,也无需建立函数入口地址表,实现成本较低图I为现有技术中第一种指令替换方法的示意图;图2为现有技术中第二种指令替换方法的示意图;图3为现有技术中第三种指令替换方法的流程图;图4为本发明实施例中的实现灵活且低成本的指令替换方法流程图;图5为图4所示方法的一个实施例中的方法流程图;图6为图5所示流程中步骤504的实现方法流程图;图7为本发明实施例中的实现灵活且低成本的指令替换装置的结构示意图;图8为图7所示装置的一个实施例中代码替换单元的结构示意图;图9为图7所示装置的一个实施例中陷阱指令执行单元的结构示意图具体实施例方式为使本发明实施例的目的和优点更加清楚,下面结合附图对本发明实施例作进一步的详细说明。
图4为本发明实施例中的指令替换装置的指令替换方法流程图,该流程包括步骤401 :判断当前是否满足指令替换条件,如果是,替换从地址线上当前地址中读出的指令操作码,然后执行步骤402 ;否则执行步骤403步骤402 :检测从当前地址中读出的指令操作码是否指示陷阱指令,如果是,执行预设地址中的替换代码,并结束流程;否则执行步骤403在本发明实施例中,陷阱指令为预先设置的、指示执行预设地址中的替换代码的 一种指令,陷阱指令的指令操作码可以从CPU现在未使用的机器码中任选,例如可以选择OxbS作为陷阱指令的指令操作码步骤403 :对所述当前地址中的指令译码并执行可以看出,本发明中实现灵活且低成本的指令替换方法中,在当前满足指令替换条件时,替换指令操作码对于那些仅需替换指令操作码的指令来说,后续继续进行译码和执行即可,对于那些替换内容较多的指令来说,设置了一种陷阱指令,当替换指令操作码后的指令为陷阱指令时,执行预设地址中的替换代码,间接实现了指令替换使用上述指令替换方法可以在现有CPU在结构不作大改动、且不改变编译器的前提下,灵活的替换固化在CPU的MASK ROM中的单条指令或一系列指令的组合,并且由于无需修改MASK ROM,也无需建立函数入口地址表,实现成本较低。
下面给出图4所示方法的一个具体实施例图5为图4所示方法的一个实施例的方法流程图,包括初始化流程和指令替换流程图5中虚线框内为上述初始化流程,包括初始化修改点数量η、设置修改点位置及每个修改点位置对应的替换指令操作码、设置指令替换服务程序入口地址、使能指令替换功能上述指令替换流程包括步骤501 :判断当前是否为取指令操作且存在与地址线上的当前值相同的修改点位置,如果是,执行步骤502,否则执行步骤505地址线上的当前值,指示的就是当前地址步骤502 :使用与地址线上的当前值相同的修改点位置对应的待替换的指令操作码,替换从地址线上当前地址中读出的指令操作码,将替换后的指令填入指令FIFO步骤503 :检测从地址线上当前地址中读出的指令操作码是否指示陷阱指令,如果是,执行步骤504,否则执行步骤506步骤504:保护地址线上的当前地址,跳转到指令服务替换程序的入口地址,并调用指令替换服务程序执行预设地址中的替换代码,结束流程本步骤中,调用指令替换服务程序执行预设地址中的替换代码的方法流程如图6所示,图6所示流程包括步骤601 :计算当前地址的堆栈指针本步骤中,由于指令替换服务程序并不知道地址线上的当前地址,所以通过公式SPfixpos = SPnOT-服务程序入口地址寄存器中的字节数来计算当前地址的堆栈指针。
步骤602 :从当前地址的堆栈指针指向的位置读出当前地址的程序指针本步骤中,根据SPfix ptjs指向的位置读出当前地址的程序指针PC_ent步骤603 :判断当前地址是否与第i个修改点位置相同,如果是,执行步骤604,否则执行步骤605步骤604 :执行第i个修改点位 置对应的预设地址中的替换代码,结束流程步骤605 :判断i是否小于等于修改点数量n,如果是,计算i = i+Ι,并返回步骤603,否则结束流程经过上述步骤601 步骤605调用指令替换服务程序执行预设地址中的替换代码步骤505 :将程序空间读到的数据填入指令FIFO步骤506 :对地址线上的当前地址中的指令译码步骤507 :执行译码后的指令图7为本发明实施例中实现灵活且低成本的指令替换装置的结构示意图,该装置包括代码替换单元、陷阱指令检测单元和陷阱指令执行单元上述代码替换单元,用于判断当前是否满足指令替换条件,如果是,替换从所述当前地址中读出的指令操作码,否则将地址线上当前地址中的指令输出给译码执行单元上述陷阱指令检测单元,用于检测代码替换单元处理后的指令中的指令操作码是否指示陷阱指令上述陷阱指令执行单元,用于在陷阱指令检测单元得出的检测结果为是时,执行预设地址中的替换代码,在所述陷阱指令检测单元得出的检测结果为否时,将地址线上当前地址中的指令输出给译码执行单元。
下面提供图7所示装置的一个具体实施例本实施例中,指令替换装置中除了包括代码替换单元、陷阱指令检测单元和陷阱指令执行单元外,还包括服务程序入口地址寄存器,用于存储指令替换服务程序的入口地址图8为图7所示装置的一个实施例中代码替换单元的结构示意图,该代码替换单元包括取指令和取数据判决子单元、修改点数量寄存器、N选一多路复用器、N个程序地址比较器、N个比较匹配子单元、N个修改点位置寄存器、N个替换指令操作码寄存器、N个二选一多路复用器和N个与门每个修改点位置寄存器与一个程序地址比较器、一个比较匹配子单元、一个与门、一个替换指令代码寄存器及一个二选一多路复用器具有对应关系,N为整数上述修改点数量寄存器,用于存储修改点数量的初始值η,使能η个比较匹配子单元这里的η 权利要求1.一种实现灵活且低成本的指令替换方法,其特征在于,该方法包括 A、判断当前是否满足指令替换条件,如果是,替换从地址线上当前地址中读出的指令操作码,然后执行步骤B ;否则执行步骤C ; B、检测从当前地址中读出的指令操作码是否指示陷阱指令,如果是,执行预设地址中的替换代码,并结束流程;否则执行步骤C ; C、对所述当前地址中的指令译码并执行。
2.如权利要求I所述的方法,其特征在于,所述步骤A之前进一步包括初始化的步骤,具体包括初始化修改点数量、设置修改点位置、设置每个修改点位置对应的替换指令操作码、设置指令替换服务程序入口地址及使能指令替换功能3.如权利要求2所述的方法,其特征在于,步骤A中的所述指令替换条件为当前为取指令操作且存在与地址线上的当前值相同的修改点位置; 步骤A中的所述替换从地址线上当前地址中读出的指令操作码为使用与地址线上的当前值相同的修改点位置对应的待替换的指令操作码,替换从所述当前地址中读出的指令操作码4.如权利要求2所述的方法,其特征在于,步骤B中所述执行预设地址中的替换代码为保护所述当前地址,跳转到指令服务替换程序的入口地址,调用所述指令替换服务程序执行预设地址中的替换代码5.如权利要求4所述的方法,其特征在于,所述保护所述当前地址为将所述当前地址的程序指针PCc^mt放入堆栈,对应的堆栈指针为SPfix rrost56.如权利要求5所述的方法,其特征在于,所述跳转到指令服务替换程序的入口地址,调用所述指令替换服务器程序执行预设地址中的替。