LCC编译器的源程序分析(56)寄存器分配的属性结构
来源:互联网 发布:手机维修软件有哪些 编辑:程序博客网 时间:2024/05/17 01:06
现在详细地分析寄存器分配的属性结构,它的定义如下:
#001 typedef struct {
#002 Symbol vbl; //保存变量符号,而不是临时变量.
#003 short set; //寄存器类型,比如整数,或者浮点数。
#004 short number; //寄存器编号。
#005 unsigned mask; //寄存器字节大小,比如EAX,还是AX。
#006 } *Regnode;
#007
#008 //寄存器集合类型:整数寄存器和浮点寄存器。
#009 enum { IREG=0, FREG=1 };
vbl是用来保存变量的符号指针。
set是保存寄存器类型,比如是使用IREG整型寄存器,还是使用FREG浮点寄存器。
number是寄存器编号,比如在X86里是从0开始到32。
mask是用来表示寄存器的字节大小,比如AH是8位mask值是1,AX是16位mask值是2,EAX是32位mask是4。
同时程序里还使用到两个数组保存全局寄存器的使用情况,如下:
#001 //保存空闲的寄存器
#002 unsigned freemask[2];
#003
#004 //保存已经使用的寄存器。
#005 unsigned usedmask[2];
freemask是保存整型和浮点寄存器的空闲寄存器。
usedmask是保存整型和浮点寄存器的已经使用寄存器
通过上面的数据结构来实现寄存器分配的。
- LCC编译器的源程序分析(56)寄存器分配的属性结构
- [转载]LCC编译器的源程序分析(56)寄存器分配的属性结构
- LCC编译器的源程序分析(48) 寄存器分配
- LCC编译器的源程序分析(49) 寄存器分配
- LCC编译器的源程序分析(50) 分配一个寄存器
- LCC编译器的源程序分析(51) 分配一个寄存器
- LCC编译器的源程序分析(51) 分配一个寄存器
- [转载]LCC编译器的源程序分析(48) 寄存器分配
- [转载]LCC编译器的源程序分析(49) 寄存器分配
- [转载]LCC编译器的源程序分析(50) 分配一个寄存器
- [转载] LCC编译器的源程序分析(51) 分配一个寄存器
- LCC编译器的源程序分析(52)寄存器溢出
- LCC编译器的源程序分析(68)内存分配链表
- LCC编译器的源程序分析(68)内存分配链表
- LCC编译器的源程序分析(68)内存分配链表
- LCC编译器的源程序分析(68)内存分配链表
- LCC编译器的源程序分析(68)内存分配链表
- LCC编译器的源程序分析(68)内存分配链表
- 在ASP.NET中跨页面实现多选
- EJB3.0 依赖注入
- 在.NET中杀死Word,Excel等进程
- 从一个HTML返回所有的图片链接
- 在.NET中利用XMLHTTP下载文件
- LCC编译器的源程序分析(56)寄存器分配的属性结构
- 在服务器端得到CheckBoxList控件最后选择项的方法
- 七个好的习惯
- C++的4种类型转换
- PreparedStatement处理批量SQL时,不支持SELECT常量内容(包括一些外面数据要作为参数SELECT)
- 【CSS技巧】新标准带来的新问题
- 不经保存,直接读取上传文件的内容
- 计算机系统漫游
- MFC的子类化技术