JGen%3a一个基于模板的动态Java字节码生成系统.pdfVIP

JGen%3a一个基于模板的动态Java字节码生成系统.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JGen:一个基于模板的动态Java字节码生成系统 郝雷 廖湖声 (北京工业大学计算机学院 北京100022) ■要动态代码生成是一种在运行时刻生成可执行代码的技术,可以用来实现各种程序 优化.本文夼绍了一个利用动态Java字节码生成墨的设计和实现,并且通过实例分析,介 绍了这种通用的动态代码生成技术在程序优化中的用逮.这个代码生成器能够即时地、增量 武地生成字节码程序,使得使用者有可能实现传统Jnva犏译器无法完成的程序动态优化. 关筻词: 动寿代码生成“ya宇节吗Java虚拟机模板 L引言 动态代码生成技术是一种高性能程序动态优化的实现技术。利用这种方法,应用程序可 以根据设计的要求在运行中直接生成目标代码序列;井通过运行这种目标代码程序来获得高 效率。由于在目标代码生成过程中可以利用程序计算中已经产生的中间结果,从而能够实现 编译优化技术所无法完成的程序优化。 本文介绍一个Java字节码的动态代码生成系统JGen。通过提供字节码的动态优化工具, 为程序设计者提供了改善Java程序运行效率的新手段。 2.设计思想 Java字节码作为J“a虚拟机指令,相对于Java程序具有较高的执行效率。为了实现在 运行时刻构造字节码程序,则要求系统能够逐条逐句地生成各种字节码,并且提供将字节码 综合成完整的字节码程序的功能。同时,系统应该能够隐蔽Java字节码程序内部结构的细 节,将其抽象为简单的应用接口,以避免增加使用者的负担。 为此,JGen系统为使用者提供了生成诸如类、域、方法、属性和异常捕获语句等各种 程序模块的功能。隐蔽了模块内部结构、常数池等实现细节。JGen系统采用Java类函数接 口的形式,为使用者提供了生成各种字节码、各种程序模块的功能。 借助于JGen系统,使用者在Java程序中可以构造面向对象的字节码程序。它可以生成 类、方法和异常捕获语句,也可以生成条件转移、堆栈操作、算术计算和关系计算婷各种指 令,而不涉及表达式、条件语句和循环语句等高级语言功能。 另一方面,动态代码生成系统应该具有较高的性能,代码生成应具有较高的效率;否则, 它将抵消程序优化的效果。为此,JGen系统采用了一种基于代码模板的予处理方法,将生 成的字节码代码序列预先保存在文件中,并且保留作为参数的操作数或转移目标的位置,形 成一种字节码模板:同时.JGen系统为Java程序提供了装入字节码模板.以及在参数位置 填入具体的操作数和转移目标的功能.使得运行中的代码生成变成了简单的代码填充。使用 者可以逐步地进行代码填充和模板拼接,获得理想的高性能。 3.系统结构 如图l所示,JGen系统有类结构描述和字节码生成两个模块组成。类结构描述模块用 于支持字节码程序结构中类、域、方法和属性结构的构造。字节码生成模块完成字节码的生 成’其中cod盯类作为应用接口为用户提肾薹学生成函数·同时还负责模板的生成、填充、 转储与装入。 coder类接口函数分为类型定义.算术逻辑运算.域访问,方法调用.堆栈操作.条件 循环语句构造,异常捕获语句构造,和模扳处理八个部分。 类型定义: 类,域,方法,局部变量的定义 算术逻辑运算: 各种基本运算的实现 域的访问: 类成员变量的访问操作 方法调用 实例方法,静态方法,构造函数的实现 堆栈操作 方法参数和对象引用的压栈操作 控制语句构造: i仁else,while_do。do.whilcIs、vitch.case,for语句的实现 异常捕获语句:nca劬-finally语句的实现 模板处理: 实现模板的构造和填充 JGen系统为Java虚拟机规范1.O.2中绝大多数指令提供了代码生成函数,基本上可以 问en的组织结构图 圈一JGen摹统的组蛆蛄柯 生成各种类型的字节码。 4.应用例 本节通过一个代码生成的简例说明Jgen的使用方法。表1给出一个简单的Java程序 s姗pIe;在函数bar的三次调用中使用了同一参数ac,使得其函数定义中乘法计算i·i重复 三次。如果利用JGen系统来动态生成函数bar

文档评论(0)

bhl0572 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档