指令格式及其优化(简单应用)

指令一般由两部分组成:一部分是操作码,另一部分是操作地址码。当操作数地址为隐式时(如堆栈的操作,默认为栈顶),后一部分则不是必须的。根据指令地址码部分中显式指明的地址个数,则可形成零地址、单地址、二地址、三地址及四地址指令。

我们说的确定指令格式主要就是选择指令字中的操作码长度和地址数。指令字的长度有定长和变长两种。

我们着重要讨论的问题是指令格式的优化问题,优化就是以较少的格式,以尽可能短的码长来实现各种指令编码。

指令字包括操作码和地址码,所以对这两部分都采取优化措施。

1、操作码的优化。这要用到霍夫曼压缩的概念。霍夫曼压缩法是一种频率相关的编码方法,即出现频率高的字符编码短,频率低的字符编码长,这样可以缩短平均码长。我们要掌握的是用霍夫曼树实现霍夫曼编码。其方法很简单:
根据所给的各种指令使用频率,把它们从小到大依次排好作为叶结点(相同的频率可任取一个排在前),然后把最小的两个结点值(频率)相加,形成一个新结点,以这个结点的值与其他的叶结点值比较大小,仍旧取最小的两个结点值合并产生新结点,直到最终合并为一个根(通常这个值是1或100)。简单地记为:
从小到大排序,
最小两个合并,
重复上述过程,
只剩一个结束。