1.一种分析解释例程的虚拟指令方法,其特征在于,包括:将虚拟机保护的虚拟指令集进行简化和归类;
简化和归类后分别形成为虚拟加载和存储指令、虚拟运算指令、虚拟退栈指令和虚拟空指令;
所述虚拟加载和存储指令涉及到一个变量或常量在局部变量表和操作数栈之间的传递;
所述虚拟运算指令的语义特征是它会去读操作数栈而不改变操作数栈顶;
所述虚拟退栈指令用于直接控制操作数栈,它会将变量从操作数栈出栈从而改变操作数栈顶值,且对局部变量表没有读写操作;
所述虚拟空指令vm_nop,其当操作数栈栈顶变化值为0、操作数栈读写次数为0且局部变量表读次数为0时,判定此解释例程没有执行任何操作;
所述简化和归类的方法,包括:以操作数栈栈顶的变化值为主判断依据,然后在其内部再进一步判断其他条件,从而判定该解释例程对应的指令类别;
所述以操作数栈栈顶的变化值为主判断依据,然后在其内部再进一步判断其他条件,从而判定该解释例程对应的指令类别的方法,包括:遍历所有的解释例程集合,判断操作数栈变化范围;
如果操作数栈变化范围小于0,则进一步判断局部变量表的读次数,如果大于0,则是Tload指令,表示将一个本地变量加载到操作数栈中;等于0则是Tconst指令,表示将一个常量加载到操作数栈中;
操作数栈变化值如果等于0,则进一步判断操作数栈的读次数,如果大于0,则是Tmath指令,表示一种算数运算指令;如果等于0则是Tnop指令,表示空操作;
如果操作数栈变化值大于0,则进一步判断局部变量表的读次数,如果大于0,则是Tstore指令,表示将一个数值从操作数栈存储到局部变量表中;等于0则是Tpop指令,表示把变量从操作数栈弹出。
2.根据权利要求1所述的分析解释例程的虚拟指令方法,其特征在于,所述虚拟运算指令读操作数栈的次数是和根据算术符需要读操作数的个数一致的。
3.一种分析解释例程的虚拟指令装置,其特征在于,包括:简化和归类模块,用于将虚拟机保护的虚拟指令集进行简化和归类;
形成模块,用于简化和归类后分别形成为虚拟加载和存储指令、虚拟运算指令、虚拟退栈指令和虚拟空指令;
所述虚拟加载和存储指令涉及到一个变量或常量在局部变量表和操作数栈之间的传递;
所述虚拟运算指令的语义特征是它会去读操作数栈而不改变操作数栈顶;
所述虚拟退栈指令用于直接控制操作数栈,它会将变量从操作数栈出栈从而改变操作数栈顶值,且对局部变量表没有读写操作;
所述虚拟空指令vm_nop,其当操作数栈栈顶变化值为0、操作数栈读写次数为0且局部变量表读次数为0时,判定此解释例程没有执行任何操作;
所述简化和归类的方法,包括:以操作数栈栈顶的变化值为主判断依据,然后在其内部再进一步判断其他条件,从而判定该解释例程对应的指令类别;
所述以操作数栈栈顶的变化值为主判断依据,然后在其内部再进一步判断其他条件,从而判定该解释例程对应的指令类别的方法,包括:遍历所有的解释例程集合,判断操作数栈变化范围;
如果操作数栈变化范围小于0,则进一步判断局部变量表的读次数,如果大于0,则是Tload指令,表示将一个本地变量加载到操作数栈中;等于0则是Tconst指令,表示将一个常量加载到操作数栈中;
操作数栈变化值如果等于0,则进一步判断操作数栈的读次数,如果大于0,则是Tmath指令,表示一种算数运算指令;如果等于0则是Tnop指令,表示空操作;
如果操作数栈变化值大于0,则进一步判断局部变量表的读次数,如果大于0,则是Tstore指令,表示将一个数值从操作数栈存储到局部变量表中;等于0则是Tpop指令,表示把变量从操作数栈弹出。
4.一种分析解释例程的虚拟指令设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1~2中任意一项所述分析解释例程的虚拟指令方法。
5.一种计算机可读存储介质,其特征在于,存储有计算机可执行指令,所述计算机可执行指令用于执行权利要求1~2中任意一项所述分析解释例程的虚拟指令方法。