汇编器优化,指令名链表排序与二分查找
来源:互联网 发布:gevent 数据库 编辑:程序博客网 时间:2024/05/17 07:10
在汇编器的词法分析阶段,需要对获取的指令名进行有效性验证并保存对应的指令类型。然而,当前实现方法在效率和管理性方面还有不足,顾需进行优化,主要工作如下图。
该方法存在两方面的问题,1 需要手动建立和同步修改全局数组和指令集,还需要人工按字母索引分类,代码冗余,不易于管理。2 查找时需要遍历索引内的所有指令名,效率不高。
本次优化,使用链表自动遍历指令集并生成排好序的索引数组,并在查找时使用二分法提高效率。
由于指令集中指令并不一定按照字母顺序排列,而二分法必须是对有序数据才能进行。因此需要建立一个包含全部指令名的有序数组。实现中,使用基于链表的插入排序,表头数据为全A,为最小的指令名,每次插入时,从表头查找,直到第一个大于新指令名的节点,并将新指令名插入到该节点之前,实现中,需要一个保存上一个节点的临时变量。由于指令存在多种参数或类型,指令集中包含多条相同名指令,因此需要进行插入前的过滤。
插入排序完成后,需要将链表内容拷贝到数组中以便使用二分查找,同时记录指令总数。
二分查找对待查找内容进行折半判断,每次判断后,调整查找区间为之前的一半,本次优化使用递归形式实现。
通过以上的优化,去除了之前手工维护的全局索引数组,大大简化代码维护和管理工作,并建立相应类,调用时直接调用类方法,而非之前在使用时的for循环遍历。另一方面,提高了一定的查找效率。
0 0
- 汇编器优化,指令名链表排序与二分查找
- 二分排序与二分查找
- 二分排序与二分查找
- 二分排序与二分查找
- 排序与二分查找
- 二分查找与冒泡排序
- 插入排序与二分查找
- 快速排序与 二分查找
- sort排序与二分查找
- 排序与查找(一): 二分查找
- Java排序[理解]+优化冒泡+二分查找
- MMX汇编指令优化
- 简单的快速排序与二分查找
- 二分查找算法与快速排序
- 直接插入排序与二分查找
- 【C/C++】冒泡排序与二分查找
- 温故而知新-java排序与二分查找
- 二分查找(折半查找)与冒泡排序(C语言)
- 统计字符,以#结束
- C++之继承一:继承的规则
- Windows高精度微秒级(并发)定时器实现
- 开发过程中mybatis使用经验以及和hibernate的对比
- EasyUI之消息窗口messager
- 汇编器优化,指令名链表排序与二分查找
- 单例模式
- 题目1019:简单计算器 九度OJ
- ViewPager使用中的一些问题与思考
- Linux SWAP内存交换机制基本概念
- pid控制算法通俗理解
- php面向对象实现图片水印代码
- POJ
- linux系统中的时间API和函数库