软件开发环境试验

上传人:re****.1 文档编号:494410648 上传时间:2022-12-16 格式:DOCX 页数:55 大小:173.98KB
返回 下载 相关 举报
软件开发环境试验_第1页
第1页 / 共55页
软件开发环境试验_第2页
第2页 / 共55页
软件开发环境试验_第3页
第3页 / 共55页
软件开发环境试验_第4页
第4页 / 共55页
软件开发环境试验_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《软件开发环境试验》由会员分享,可在线阅读,更多相关《软件开发环境试验(55页珍藏版)》请在金锄头文库上搜索。

1、电子科技大学实验报告学生姓名:郭小明学号:20一、实验室名称:主楼A2-412二、实验项目名称:软件开发环境试验Huffman编码实验三、实验原理:分割函数的三项原则分割函数的三项原则包括:与其写注释,不如写函数;重复就是罪恶;函数不要超过 50行至70行。关于分割函数三原则的具体含义,请见教材和课堂教学PPT关于电话本的内容。这里不再赘述。Huffman编码的基本原理本实验要求使用Huffman编码算法,实现对文件的压缩和解压。因此,我们首先介绍 huffman的编码算法。Huffman编码是一种可变长编码方式,是由美国数学家 David Huffman创立的,是二 叉树的一种特殊转化形式。

2、编码的基本原理是:将使用次数多的代码转换成长度较短的编 码,而使用次数少的代码则可以使用较长的编码,并且保持编码的唯一可解性。指导书试验原理部分较多,在这里就不做粘贴复制了。四、实验目的:本实验总体目的是,通过使用 huffman编码算法从而实现文件的压缩和解压,以达到 使学生掌握并灵活运用分割函数的三项原则。五、实验内容:本实验要求实现一个exe程序。这个程序按照huffman编码方式,同时包含了压缩功 能和解压功能。用户通过以下命令进行压缩:C: - c uncompress_filename compress_filename上述命令中,是程序名,-c表示要进行压缩。uncompress

3、_filename是要压缩的文件 名,可以包含路径信息,而 compress_filename是压缩之后的文件名,同样可以包含路径 信息。用户可以通过如下命令进行解压:C: - u compress_filename uncompress_filename上述命令中,-u表示要执行解压命令。compress_filename是要解压的文件名,可以 包含路径信息;uncompress_filename就是解压后所得到的文件,同样可以包含路径信息。提示:在实现程序时,需要考虑如何存储huffman树或者编码表或者词频表等等。本实验要求实现两个版本的程序,一是C语言版本的,二是C+K本的。对这两个版

4、本的要求如下:对于每一个版本的程序,需要在实验报告中给出函数调用关系图、流程处理关系图以及它们的文字说明等内容;对于每一个版本的程序,都需要在实验报告中给出源代码。为了便于查重,代码中注释的比例要占到总行数的 20%C+诚本的程序,需要给出类关系图。实验报告的评分标准,包括以下几个方面:实验报告是否规范实验报告内容是否详实 实验报告中是否包含了函数调用图、流程图、类图以及它们的文字说明实验报告中的代码注释是否达到要求程序是否正确无误程序是否严格按照分函数的原则编写C+诚本的程序类关系的耦合度如何程序实现是否考虑了大文件情况六、实验器材(设备、元器件):PC机,vs 2008软件平台。七、实验数

5、据及结果分析:代码见附件。huffmanForC文件中函数列表如下:#sum_bit#count#*/void freToFile(int code口,HCode *HC)HuffmanTree用dm眦0fl牌re()Control类jmp整个多分支翻相蝌_腕冽址swap() isInNode() FPoWmSSmBBtfeselse if()cmp操作数1操作数2jxx 地址(如果不符合if条件就跳转到下一个if条件处再进行比较)jmp整个多分支流程语句后的指令地址else if()cmp操作数1操作数2jxx 地址(如果不符合if条件就跳转到下一个if条件处再进行比较)jmp 整个多分支流

6、程语句后的指令地址else if ()cmp操作数1操作数2jxx 地址(如果不符合if条件就跳转到else条件处再进行比较)elsejmp整个多分支流程语句后的指令地址循环的反汇编通过实验指导书当中给出的代码清单9的反汇编结果和分析,给出for循环反汇编代码的规律如下:for(int i = 0;i10;i+)定义i变量,并进行初始化指令代码jmp xxx跳转到A处执行B:执行计数变量递增操作1 .将变量i mov 到eax 处2 .eax里内容递增13 .再将eax里面内容mov到i的变量里A:cmp操作数1操作数2与循环结束条件做比较指令代码jxx xxx如果仍旧满足条件,向下执行;否则

7、跳转到C处向下执行循环体指令代码jmp xxx跳转到B处执行C:代码清单10while循环的代码示例:int _tmain( int argc, _TCHAR* argv口)int i = 0;int j = 0;while (i10)j+;i+;return 0;代码清单10的反汇编结果:int i = 0;0025138E mov int j = 0;00251395 mov while(i=10则跳转到002513B6处执行(即返回语句),若继续向下执行,则002513A2 002513A5 002513A8三地址处的指令Xtj进行加一操作,002513AB002513AE 002513

8、B1 对i 进行加一操作;在 002513B4 jmp 0025139C 跳转回 cmp 的指令处继续执行。通过代码清单10的反汇编结果,while语句的反汇编代码规律while()A : cmp操作数1操作数2 while循环结束条件做比较jxx B若不符合条件则,跳转到B处继续执行,若符合,则顺序执行循环体循环体指令jmp A 跳转到A处继续执行B :代码清单11int _tmain( int argc, _TCHAR* argv口)int j = 0;int i = 0;doj+;i+;while (i10);return 0;代码清单11的反汇编结果:int j = 0;0019138

9、E movdword ptr ebp-8,0int i = 0;00191395 movdword ptr ebp-14h,0doj+;0019139C moveax,dword ptr ebp-80019139F addeax,1001913A2 mov dword ptr ebp-8,eaxi+;001913A5 moveax,dword ptr ebp-14h001913A8 add eax,1001913AB movdword ptr ebp-14h,eaxwhile(i10);001913AE cmpdword ptr ebp-14h,0Ah001913B2 jl 0019139Cr

10、eturn 0;001913B4 xor eax,eax在代码清单11当中,在地址0019138E&将ebp-8设置为0,即将j设置为0,在地址00191395 处,将00191395设置为0,即将i设置为0.在地址0019139c 0019139F 001913A2 三个地 址处执行j增1的操作,在001913A5001913A8001913AB三个地址处执行i增1的操作。在地 址001913AE处执行循环条件比较指令cmpdword ptr ebp-14h,0Ah在接下来的001913B2 jl 0019139c这条指令当中,如果操作数1即i小于操作数2即10,就跳转到0019139c地址

11、处继续执行,否则向下继续执行。do -while 循环的反汇编代码规律:do循环体指令代码A:while();cmp操作数1操作数2 dowhile 循环条件判断语句jxx A如果符合条件的话,就跳转到A处的循环体部分开始执行,否则继续向下执行电子科技大学实 验报告学生姓名:郭小明学号:20一、实验室名称:主楼A2-412二、实验项目名称:软件开发环境实验三:函数调用栈帧布局三、实验原理:编译器对函数调用的支持,通常情况下都会使用栈。例如使用栈传递传参,保存函 数返回地址。另外,局部变量也通常位于栈上。Visual Studio 2008 为了防止栈上局部数组溢出,又采取了特殊的保护措施。本实

12、验就需要通过观察栈帧布局,来了解这 些保护措施。本实验的环境是 Visual Studio 2008。四、实验目的:本实验总体目的是,通过使用 Visual Studio 2008查看函数调用时参数、局部变量 等在栈上的分布情况,以达到掌握函数调用时栈帧布局的目的。六、实验器材(设备、元器件):PC机,VS 2008软件平台。七、实验步骤:函数中无任何局部变量的情况在源文件中,编写如下代码。在源文件中,编写如下代码。void f()int main()f();return 0;得到反汇编代码如下:void f()008D13A0 push008D13A1 mov008D13A3 sub008D13A9 push008D13AA push008D13AB push008D13AC lea008D13B2 mov008D13B7 mov008D13BC rep stosebpebp,espesp,0C0hebxesiediedi,ebp-0c0hecx,30heax,0CCCCCCCChdword ptr es:edi008D13BEpopedi008D13BFpopesi008D13C0popebx008D13C1m

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号