发明名称 包含栈变量函数的优化方法
摘要 本发明提供一种包含栈变量函数的优化方法,包括:申请一段物理内存空间作为所要优化的函数的映像栈,然后再申请一段虚拟内存空间作为所要优化的函数的影子栈;在所要优化的函数中选择要被提升到空闲寄存器中的栈变量;插入将被优化函数的函数栈从系统栈切换到映像栈的指令、将栈变量的内容提升到寄存器中的指令以及将映像栈中的虚存页设为保护状态的指令;将所有包含对所提升栈变量操作的指令替换为对相应寄存器操作的指令,将所有对未提升的栈变量的操作替换为对所述影子栈上相应虚存地址的操作;插入将映像栈中的虚存页解除保护状态的指令、将被提升的栈变量的内容从寄存器存回内存的指令、将函数栈帧从映像栈切换回系统栈的指令。
申请公布号 CN101847096B 申请公布日期 2012.12.12
申请号 CN201010107353.3 申请日期 2010.02.05
申请人 中国科学院计算技术研究所 发明人 李建军;武成岗
分类号 G06F9/44(2006.01)I 主分类号 G06F9/44(2006.01)I
代理机构 北京泛华伟业知识产权代理有限公司 11280 代理人 王勇
主权项 一种包含栈变量函数的优化方法,包括:步骤1)、申请一段物理内存空间作为被优化函数的映像栈,然后再申请一段虚拟内存空间作为被优化函数的影子栈,将该段虚拟内存空间映射到与所述映像栈相同的物理内存;步骤2)、在所述被优化函数中识别栈变量,从中选择要被提升到空闲寄存器中的栈变量;步骤3)、在被优化函数的入口处插入将被优化函数的函数栈从系统栈切换到映像栈的指令、将栈变量的内容提升到寄存器中的指令以及将映像栈中的虚存页设为保护状态的指令;步骤4)、在被优化函数的代码中,将所有包含对所提升栈变量操作的指令替换为对相应寄存器操作的指令,将所有对未提升的栈变量的操作替换为对所述影子栈上相应虚存地址的操作;步骤5)、在被优化函数的出口处依次插入将映像栈中的虚存页解除保护状态的指令、将被提升的栈变量的内容从寄存器存回内存的指令、将函数栈帧从映像栈切换回系统栈的指令。
地址 100190 北京市海淀区中关村科学院南路6号