6.代码最优化
6.代码最优化
背景知识 二叉树遍历算法的应用递归遍历算法 先序遍历(根左右) 根右左 中序遍历(左根右) 右左根 后序遍历(左右根) 左右根 类后序遍历解决问题 涵
背景知识 ▪ 二叉树遍历算法的应用 递归遍历算法 ▪ 先序遍历(根左右) ▪ 中序遍历(左根右) ▪ 后序遍历(左右根) ▪ 类后序遍历解决问题 根右左 右左根 左右根
代码最优化问题描述 将给定算术表达式翻译成汇编语言代码, 如何翻译得到最优编码? 汇编语言特点:面向机器的低级语言,机 器不同,汇编语言指令系统不同, 因此针对不同的机器研究算术表达式的最 优化编码问题
一、代码最优化问题描述 ▪ 将给定算术表达式翻译成汇编语言代码, 如何翻译得到最优编码? ▪ 汇编语言特点:面向机器的低级语言,机 器不同,汇编语言指令系统不同, ▪ 因此针对不同的机器研究算术表达式的最 优化编码问题
模型机A下的最优化代码 模型机A结构如下: 一个累加寄存器R 指令系统包括: >存入指令:store M;将寄存器R的值存入存储单元M > 装入指令:load M;将存储单元M的值存入寄存器R 算术运算指令:opM;R⊙MR ■其中,⊙可以是:add(+),sub(-),mul(*),div(I)
•模型机A下的最优化代码 ▪ 模型机A结构如下: ▪ 一个累加寄存器R ▪ 指令系统包括: ➢ 存入指令:store M;将寄存器R的值存入存储单元M ➢ 装入指令:load M;将存储单元M的值存入寄存器R ➢ 算术运算指令:op M;R⊙M→R 其中,⊙可以是:add (+),sub(-),mul(*),div(/)
例1(a+b)(c+d)的两段代码 2 LOAD a LOAD ADD b ADD d ■ STORE T1 STORE T1 LOAD C ■ LOAD a ADD d ■ ADD b STORE T2 DIV T1 LOAD T1 DIV T2
例1 (a+b)/(c+d)的两段代码 ▪ LOAD a ▪ ADD b ▪ STORE T1 ▪ LOAD c ▪ ADD d ▪ STORE T2 ▪ LOAD T1 ▪ DIV T2 ▪ LOAD c ▪ ADD d ▪ STORE T1 ▪ LOAD a ▪ ADD b ▪ DIV T1 1 2