计算机体系结构实验课案.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机体系结构实验课案

计算机体系结构 实验报告 班级:计科0905班 姓名:肖军 学号:0909091823 实验一 对指令操作码进行霍夫曼编码实验目的???了解和掌握指令编码的基本要求和基本原理? 二、实验内容? 1.?使用编程工具编写一个程序,对一组指令进行霍夫曼编码,并输出最后的编码结果 以及对指令码的长度进行评价。与扩展操作码和等长编码进行比较。? 问题描述以及问题分析:? 我们举例说明此问题,例如:? 有一组指令的操作码共分七类,它们出现概率如????? 下表所示:???? P1?P2?P3?P4?P5?P6?P7? 0.45?0.30?0.15?0.05?0.03?0.01?0.01 ?? ?????对此组指令进行HUFFMAN?编码正如下图所示:? ????? ? ???????????????????????????????????????图1???????????????? 最后得到的HUFFMAN?编码如下表所示:? ????????????? P1?P2?P3?P4?P5?P6?P7? 0?10?110?1110?11110?111110?111111? 1?2?3?4?5?6?6? 最短编码长度为:? ??H=0.45?*1+0.30*2+0.15*3+0.05*4+0.03*5+0.01*6+0.01*6=-1.95.? 要对指令的操作码进行HUFFMAN?编码,只要根据指令的各类操作码的出现概率构造 HUFFMAN?树再进行HUFFAM?编码。此过程的难点构造HUFFMAN?树,进行HUFFAM?编 码只要对你所生成的HUFFMAN?树进行中序遍历即可完成编码工作观察上图1,不难看出构造HUFFMAN?树所要做的工作:1、先对各指令操作码的出现 概率进行排序,构造一个有序链表。2、再取出两个最小的概率节点相加,生成一个生的节 点加入到链表中,同时从两表中删除此两个节点。3、在对链表进行排序,链表是否只有一 个节点,是则HUFFAN?树构造完毕,否则继续做2?的操作。为此设计一个工作链表(链表 的元素时类,此类的功能相当结构。)、HUFFMAN?树节点、HUFFMAN?编码表节点。具体 如下:? //huff_man?tree?point;? class?huff_p{? public:? ??????huff_p*?r_child;??//大概率的节点,即右子节点;? ??????huff_p*?l_child;??//小概率的节点,即左子节点;? ???c?har?op_mask[3];???//指令标号;? ???float?p;????????//指令使用概率;? };?//work?link?point? class?f_min_p{? public:? ?f_?min_p*?next;? ????c?har?op_mask[3];???//指令标号;? ?float?p;????????//指令使用概率;? ?huf?f_p*?huf_p;? };? /huff_man?code?point? class?huff_code{? public:? ??huff_code*?next;? ??float?p;? ??char?op_mask[3];? ?????char?code[N];??????//huffman?编码;? };?? 函数说明:? f_min_p*?input_instruct_set();//输入指令集子模块;? ?huff_p*?creat_huffman_tree(f_min_p*?head);//构造huffman?树;? f_min_p*?fin_min(f_min_p*?h);???????//?在工作链表中寻找最小概率节点函数。? f_min_p*?del_min(f_min_p*?h,f_min_p*?p);//在工作链表中删除最小概率节点函数。? void?insert?_n(f_min_p*?h,f_min_p*?p);//??在工作链表中插入两个最小概率节点生成的节点函 数。? huff_p*??cr?eat_huffp(f_min_p*?p);//生成HUFFMAN?节点。? ? void?creat_huffman_code(huff_p*?h1,huff_code*?h);//生成huffman?编码;? void?r_find(huff_p*?p1,char?code[],int?i,huff_code*?h);? //遍历HUFFMAN?树生成指令操作码的HUFFMAN?编码。? ?void?output_huffman(huff_code*?head);//输出huffman?编码;? void?cal_sort_length(huff_code*?he

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档