英语四级考试英语六级考试公务员考试报关员考试考研计算机等级考试司法考试医师考试职称英语心得体会策划书
当前位置: 应届生 > 计算机等级考试 >

[计算机与信息技术论文]优化程序长度的方法

时间:2009-07-27 16:36来源:未知 作者:admin 点击:
  


  本文分析了microsoft公司[计算机与信息技术论文]优化程序长度的方法p-code 技术的基本工作原理、p-code的使用方法以及p-code程序的性能。提出了p-code编译的程序调试时应注意的主要问题。

  关键词:程序优化 代码压缩 p-code 编译指示器 程序调试

1. 前言

  用户要求应用程序有更多更全的功能,使得应用程序的代码长度持续增长,但由于系统的开放性,有时也要求应用程序能在多种环境下运行,有很好的可移植性。这要限制应用程序的代码长度,减少其运行时所占的内存容量。

  microsoft公司为了满足此需求,在其应用程序开发包中引进了一种称为p-code(packed code, 压缩码)的代码压缩技术。此技术与本地机器无关,在大多数情况下,可把执行程序的长度减少大约40%,为程序员提供了一个灵活而又容易实现的解决方案,减少了应用程序对内存容量日益增长的需求。

2. p-code工作原理

  p-code 的基本工作原理是编译器先把执行程序编译为比80x86机器码紧凑得多的中间代码形式,然后在链接时把一个小工作引擎嵌入执行程序中,最后在运行时由此工作引擎把p-code解释为本地机器码实际执行。为了方便使用,p-code技术实现于编译过程的代码生成阶段。例如开发者在c/c++中应用p-code技术时,只需把它作为一个“优化”选项选中即可

  2.1. 指令格式

  在应用p-code技术时,链接器会自动拷贝一份长度约为9k的p-code工作引擎到执行程序中,程序运行时它仿真一个虚拟处理器。
p-code技术能压缩执行程序代码长度的关键就在于工作引擎的指令格式。我们知道,在现代计算机的指令格式中,指令除指令码外,还包括指出源和目的操作数的地址码,真正的操作数一般放在内存和寄存器中。而一般常用的指令格式是二地址码结构,少量使用一地址码和零地址码结构。例如最简单的两个寄存器值相加汇编指令写为:add ax, bx; ax←(ax)+(bx)

  而p-code是一个独立于本地机器的虚拟指令系统,其工作引擎是一个基于堆栈的虚拟机,它的大多数指令中只有指令码,没有地址码部分,隐含操作数存储于系统堆栈中,因而远比本地机器指令紧凑。同样上述的工作,p-code就可简化为addw,它执行时从堆栈中弹出操作数,运算后的结果再压回堆栈中。如用80x86汇编指令表示,就等价于下列指令段:
  pop ax ;弹出第一个操作数到ax寄存器中
  pop bx ;弹出第二个操作数到bx寄存器中
  add ax, bx ;把两数相加,结果存贮于ax寄存器中
  push ax ; 将ax寄存器中的结果压回堆栈中

  2.2. 操作码长度

  p-code引擎使用堆栈隐含寻址,使得其操作码长度平均小于2个字节,分为标准和扩展的操作码两大类。

  标准操作码占用一个字节,由255条最常用的指令组成,扩展操作码由256条不太常用的指令组成。有统计表明,在一个全部编译为p-code的20万行的c程序中,一字节指令使用频率为56%,占代码长度比例为37%,二字节指令使用频率为39%,占代码长度比例为52%,而三或四字节指令占用了余下很小的百分比。

  2.3. 引用

  p-code技术优化执行程序长度的另一个重要特性是引用。引用就是编译器优化时,去掉代码段的重复现象,共享代码段的单个实例,类似于在高级语言中使用函数或过程的方法,当然它是编译器自动进行的。编译器优化时检查它所产生的代码,寻找指令段重复的地方,在程序中只保留重复段的一次出现,将所有其它出现的地方都改为指向保留段的一条跳转指令。此技术为执行程序长度压缩了大约5-10%的额外空间。

  2.4. 本地入口点

  使用p-code,在程序代码中有时也会产生额外的空间开销,这就是p-code函数前面的本地入口点。

  当程序中局部使用p-code编译时,很可能会发生机器码函数调用p-code函数的情况。由于p-code指令段需由p-code引擎解释执行,这时就需要编译器在p-code函数开处额外增加几条机器指令即本地入口点,以便机器转换控制,停止执行本地机器码而调用p-code引擎,由p-code引擎继续解释执行p-code函数。 

 

快速找工作求职,请点击:
顶一下
(0)
0%
踩一下
(1)
100%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
栏目导航
计算机等级考试推荐