随笔-156  评论-223  文章-30  trackbacks-0
1. 输入:前者是二进制可执行程序,后者是高级语言源程序
2. 优化对象:前者主要是直线型代码区域比如踪迹或超块(热点路径代码),超块类似后者中的扩展块;后者是控制流图,即所有代码块,不限于热点路径代码。超块构造类似后者中的基本块放置和过程放置
3. 优化方法:前者要运行时采集剖析数据比如结点剖析和边剖析,再基于剖析数据形成有利于指令cache局部性的超块,然后在超块上作常量传播、常量折叠、强度削弱、复写传播、死代码消除、公共表达式消除等基本优化,也会作指令重排,但考虑到陷阱处理要恢复精确的客户进程状态,因此比较受限,没有后者中的指令重排自由。后者如果基于剖析作优化,那么效果和前者差不多
4. 寄存器分配:都是基于活跃范围的冲突图着色算法,但前者考虑到陷阱处理会延长相关寄存器的活跃范围,而后者不用
————————————————————————
总结:二进制优化所用的技术和编译优化其实相同,不同的是为陷阱处理所作的改变调整,以及运用在热点代码块而非所有块
posted on 2023-09-06 23:44 春秋十二月 阅读(59) 评论(0)  编辑 收藏 引用 所属分类: Compiler

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理