论文部分内容阅读
程序设计可视化作为科学可视化的一个分支,它的特点主要体现在编程以及运行环境可视化两方面。可视化编程开发工具已经成为现代软件开发行业的主流工具。然而,目前主流汇编语言的可视化编程开发工具大多还停留在编辑可视化上,没有考虑其执行过程的可视化,使得程序设计者不能深入了解程序的执行过程。本文以X86汇编语言为研究对象,实现了一个X86汇编语言的可视虚拟机---X86VVM2。本文的主要工作如下:首先,总结了主流汇编集成开发环境及现有的汇编可视虚拟机的特点和不足,并按照虚拟机设计的基本原理,重新设计X86VVM可视虚拟机内核,得到新的X86VVM2内核,该内核解决了数据区dup伪指令的解析、程序段及寻址方式的识别、函数的调用和带纠错功能的异常处理等问题。然后,采用面向对象的设计思路,同时考虑到运行时的人机交互,实现了内核的可视化,开发出X86VVM2可视虚拟机。X86VVM2具有CPU内部寄存器数据及寄存器之间数据动态交互可视化、程序数据(数据变量、函数、符号表)可视化、内核栈可视化、编辑可视化、调试可视化、代码跟踪可视化、人机交互可视化及流程图可视化的功能。为了更好地实现流程图可视化,本文提出了翻页效果的流程图自动生成算法。该算法首先将源程序划分为各个基本模块,然后根据不同类型的模块,生成对应的抽象节点,最后根据节点内存放的地址信息,画出主程序的流程图。函数调用时,先将主程序的开始节点进栈,然后画出子函数的流程图;函数返回时,取得保存在栈中的节点,画出以此节点开始的主程序流程图,从而实现主程序流程图与子程序流程图自动切换。最后,总结了X86VVM2的实现及对内核的测试,同时选取一个实例对X86VVM2的整体功能进行测试。试验结果表明,内核执行结果正确及各可视化功能运行正常。在论文结尾处,总结了本课题的主要工作并对后续工作进行展望。