首页> 中文学位 >链接时死代码删除与基于模式匹配的机器码翻译
【6h】

链接时死代码删除与基于模式匹配的机器码翻译

代理获取

目录

声明

摘要

第1章 绪论

1.1 背景知识

1.1.1 程序链接

1.1.2 程序优化

1.1.3 死代码删除

1.1.4 机器码翻译

1.2 研究意义

1.3 研究内容

1.4 论文组织

第2章 程序链接相关技术

2.1 引言

2.2 ELF文件格式

2.3 传统的程序链接技术

2.3.1 地址和空间分配

2.3.2 符号解析

2.3.3 重定位阶段

2.3.4 一个简单的例子

2.3.5 传统程序链接技术的缺点

2.4 基于原子模型的链接器lld

2.4.1 项目介绍

2.4.2 原子模型介绍

2.4.3 文件模型介绍

2.5 本章小结

第3章 链接时死代码删除实现

3.1 引言

3.2 lld链接步骤

3.2.1 处理链接选项

3.2.2 读取输入文件

3.2.3 Resolve阶段

3.2.4 Passes阶段

3.2.5 输出可执行文件

3.3 基于LLD的链接时死代码删除实现

3.3.1 增加死代码删除链接选项

3.3.2 寻找死代码删除循环遍历的根

3.3.3 处理kindLayoutAfter类型引用

3.3.4 处理弱符号定义

3.3.5 处理别名问题

3.3.6 处理static函数(变量)定义

3.3.7 处理其它问题

3.4 实验结果

3.5 本章小结

第4章 基于模式匹配的机器码翻译方法

4.1 引言

4.2 BWDSP100处理器及其指令集

4.2.1 BWDSP100处理器

4.2.2 BWDSP100指令集

4.3 基于模式匹配的机器码翻译方法

4.3.1 机器码翻译概述

4.3.2 模式表的结构及建立方法

4.3.3 匹配表的结构及建立方法

4.3.4 编写格式符的处理方法

4.3.5 机器码翻译过程

4.4 性能分析

4.5 相关工作

4.6 本章小节

第5章 总结

5.1 本文工作

5.2 本文贡献与创新之处

5.3 进一步工作

参考文献

附录

致谢

在读期间发表的学术论文

攻读学位期间参加的科研项目

展开▼

摘要

衡量链接器性能的关键指标除了链接速度以及生成的可执行文件的性能外,就是可执行文件的大小。对于当今大型项目而言,程序工程中往往包含一些无用的代码块,这些代码块在一定程度上增大了可执行文件的大小。通过链按时死代码删除,可以删除这些无用的代码块,从而达到减小可执行文件大小的效果。由于传统程序链接技术是基于“段”的,因此不能对死代码以函数或变量等为单位进行删除。
  基于原子的程序链接技术则不同,它是基于更细粒度的“原子”的。原子是对函数、变量以及常量字符串等不可再分的代码或数据块的抽象表示。开源编译基础设施LLVM的子项目lld正是基于原子模型的链接器。本文首先分析了基于原子模型的链接的实现过程,然后基于lld,实现了针对X8664 Linux平台的链接时死代码删除。实验结果表明,经过死代码删除优化后,链接器能生成更小的可执行文件。
  机器码翻译是把机器码转换成汇编代码的过程,常用于反汇编、程序调试、病毒分析等领域。机器码翻译依赖于描述指令集的一系列表格,包括指令格式表、操作码表、寻址方式表等。传统的机器码翻译方法,通过逐步查询这些表格,找到对应机器码的汇编码,从而实现翻译。由于传统方法查表过程复杂,导致其翻译速度较慢。本文提出了基于模式匹配的方法,通过建立模式表、匹配表从而直接建立机器码与汇编码间的映射关系。由于该方法大大简化了机器码翻译的查表过程,因此在一定程度上提高了机器码翻译的速度。同时,采用该方法实现的程序开发时间更短、后期维护更容易。

著录项

相似文献

  • 中文文献
  • 外文文献
  • 专利
代理获取

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号