x86虚拟机设计之CISC指令解析

来源:互联网 发布:硅藻泥 知乎 编辑:程序博客网 时间:2024/05/18 14:24

一、指令分类

CISC指令集的长度不是固定的,可以按照指令的复杂度对代码进行分类。

 

针对x86指令集,有些短指令的翻译十分简单(比如不需要解析Ev等字段),可以在解析之后迅速翻译,可以按照以下规则进行分类:

1、有没有前缀字节。

2、单字节指令。

3、简单的操作码,比如仅仅是寄存器操作。

4、复杂的指令,多操作码可以对相似的操作进行归类。

 

我觉得switch case是比较好的方法,即可以将指令进行分类又可以合并复杂指令的相似操作。

 

二、二进制翻译中的内嵌C语言

1、指令比较复杂,需要很多临时寄存器。

2、host不支持target的指令,比如arm没有除法指令。

3、和硬件的关系比较密切,需要在汇编中调用C函数,比如 ioport操作。


三、关于中间代码的利弊分析

优点:

        有利于代码的优化。

        有利于进行跨平台的设计。

缺点

         有损性能。

采用三地址法来描述一个中间代码