[发明专利]一种含有配对寄存器的寄存器分配方法有效
申请号: | 200810240849.0 | 申请日: | 2008-12-26 |
公开(公告)号: | CN101770387A | 公开(公告)日: | 2010-07-07 |
发明(设计)人: | 周谦 | 申请(专利权)人: | 北京中电华大电子设计有限责任公司 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100102 北京市朝阳*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 含有 配对 寄存器 分配 方法 | ||
技术领域
本发明涉及编译器领域一种寄存器的分配方法,具体是指针对配对寄存器的分配方法。
背景技术
编译器是开发人员编写程序的工具,它将开发人员编写的高级语言程序转换成低级的汇 编语言。在转换过程中,一个重要的组成部分就是寄存器分配,它根据目标机的寄存器情况 进行分配。
有些目标机的芯片中有这样的寄存器,需要两个一起配对使用,比如本文面向的目标机, 有字寄存器R0,R1到R15,其中R0到R6可以字节寻址,例如字寄存器R0,对应两个字节 寄存器R0L和R0H,分别对应字寄存器R0的低字节和高字节。有时两个寄存器需要配对使 用,我们称这样的用法为寄存器配对,其中一个寄存器我们称之为主寄存器,另外一个称为 配对寄存器。例如,如果R0L和R0H配对,作为一个寄存器R0使用,这种配对多发生在字 节寄存器转换成字寄存器时,R0L称之为主寄存器,R0H称之为配对寄存器。一个主寄存器 可能有多个配对寄存器,称之为多重配对。例如,如果0号寄存器R0(R0L)作为主寄存器, 字节配对的情况下,主寄存器R0L的配对寄存器为R0H,字配对的情况下,主寄存器R0的 配对寄存器为R1,这样主寄存器0号寄存器R0(R0L)就是两重配对。配对又分为字配对和字 节配对,主寄存器为字寄存器时称之为字配对,主寄存器为字节寄存器时称之为字节配对。 值得注意的是,字配对时,配对寄存器可以为字节寄存器,例如movu[R0],R2L指令,目的 操作数R0不只是代表了R0,还代表了R1L,用于对24位的地址进行寻址,这样R0和R1L 就需要配对使用,由于主配对寄存器为字寄存器R0,我们称之为字配对,但是与之配对的是 字节寄存器。
对于要分配寄存器的变量,用TN这个数据结构来描述,编译器中只对编译器生成的临 时变量进行分配,每个临时变量对应一个TN来描述。
发明内容
传统的寄存器分配方法很少考虑含有配对寄存器的情况,多是针对普通寄存器的处理。 本发明目的在于对含有配对寄存器的芯片也能进行处理,进行正确有效的寄存器分配。
本发明的目的通过以下技术实现,在寄存器分配前的准备工作中记录下配对的寄存器 TN,在寄存器分配阶段优先对配对的寄存器TN进行分配,然后再对普通的寄存器TN进行 分配,并进行压栈处理,如图1所示。其中寄存器分配前的准备工作步骤如下:
(1)在指令选择过程中建立寄存器的配对关系,在多重配对的情况下,记录下TN的多个 配对TN号。(TN是待分配寄存器的临时变量,多重配对是指一个TN可能有多个配对的 寄存器,比如寄存器0,与之配对的字节寄存器是R0H,与之配对的字寄存器是R1,并 对这两种配对情况进行区分,设定不同的标志进行判断,根据主配对寄存器的类型,分别 称之为字节配对和字配对)。出现配对寄存器的原因有以下情况:一个字节寄存器如R0L, 要转换成字寄存器R0,则R0L与R0H是配对寄存器,转换后作为一个统一的字寄存器 R0来使用,我们称之为字节配对,主寄存器是R0L,配对寄存器是R0H。又如,在movu 指令中,例如movu[R0],R2L指令,目的操作数R0不只是代表了R0,还代表了R1L,用 于对24位的地址进行寻址,这样R0和R1L就需要配对使用,由于主配对寄存器为字寄 存器R0,我们称之为字配对,但是与之配对的是字节寄存器。第三种情况是,乘法和除 法指令。在指令选择过程中,我们对主寄存器设定字节配对或者字配对的标志,并将与之 配对的寄存器号记录在主寄存器TN的数据结构里。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京中电华大电子设计有限责任公司,未经北京中电华大电子设计有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810240849.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种高效的LED发光模块
- 下一篇:平面天线以及应用该平面天线的RFID标签