资源描述:
《06mips指令系统(3)_665108544》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、微机原理(计算机原理)第6讲MIPS指令系统(3)1第6讲MIPS指令系统(3)MIPS模拟器MIPS汇编语言语法MIPS汇编程序实例清华大学电子工程系,马洪兵,2011年秋2SPIMSPIM是主要的MIPS模拟器,能够运行和调试MIPS汇编语言程序SPIM支持Uinx、Windows等多个操作系统平台http://spimsimulator.sourceforge.net/清华大学电子工程系,马洪兵,2011年秋3SPIM寄存器窗口正文段数据与堆栈段SPIM消息清华大学电子工程系,马洪兵,2011年
2、秋4MARSMARS是MIPSAssemblerandRuntimeSimulator(MIPS汇编器和运行时模拟器)的缩写能够运行和调试MIPS汇编语言程序MARS采用Java开发,跨平台http://courses.missouristate.edu/KenVollmar/MARS/清华大学电子工程系,马洪兵,2011年秋5MIPS模拟器清华大学电子工程系,马洪兵,2011年秋6系统调用MIPS模拟器通过系统调用指令(syscall)提供了一组类似操作系统的服务调用方法:将系统调用代码装入$v0(
3、寄存器编号2)寄存器将参数(如果有)装入$a0~$a3(寄存器编号4~7)或$f12寄存器Syscall返回值保存在$v0或$f0寄存器中清华大学电子工程系,马洪兵,2011年秋7系统调用代码系统调用参数结果1printinteger$a02printfloat$f123printdouble$f124printstring$a05readintegerintegerin$v06readfloatfloatin$f07readdoubledoublein$f08readstring$a0=buffer
4、,$a1=length9sbrk$a0=amountaddressin$v010exit清华大学电子工程系,马洪兵,2011年秋8系统调用代码系统调用参数结果11printchar$a012readcharcharin$v013open$a0=filename(string),filedescriptor$a1=flags,$a2=mode(fd)in$v014read$a0=fd,$a1=buffer,numcharsread$a2=lengthin$v015write$a0=fd,$a1=buff
5、er,numchars$a2=lengthwritein$v016close$a0=fd17exit2$a0=result清华大学电子工程系,马洪兵,2011年秋9Helloworld.textmain:la$a0,strli$v0,4syscall#printstringli$v0,10syscall#exit.data.align2str:.asciiz"Helloworld."清华大学电子工程系,马洪兵,2011年秋10内存布局内存最低端保留,其上是正文段(代码段)系统内存区正文段之上是静态数据
6、段,存放全栈局常量和其他静态数据静态数据段之上为分配动态数据的堆动态数据(堆)栈由用户内存区的高地址端开始,栈空间由高地址向低地址增长静态数据各部分地址由软件规定,并非MIPS体系结构的一部分正文(指令)保留清华大学电子工程系,马洪兵,2011年秋11HelloworldMARS约定系统内存区.textmain:7fffeffc栈la$a0,strli$v0,4syscallli$v0,1010040000动态数据(堆)syscall.data静态数据10010000.align2str:.ascii
7、z"Helloworld."正文(指令)00400000保留清华大学电子工程系,马洪兵,2011年秋12第6讲MIPS指令系统(3)MIPS模拟器MIPS汇编语言语法MIPS汇编程序实例清华大学电子工程系,马洪兵,2011年秋13数据类型整型数据:支持十进制、十六进制、八进制,表示法和C语言相同十进制数前不可以有无效的0八进制数加前导0十六进制加前导0x清华大学电子工程系,马洪兵,2011年秋14数据类型浮点型数据:表示方法<尾符>d1[.d2][e
8、E<阶符>d3]其中,d1、d2、d3都是十进制数
9、例如:36.25e-2清华大学电子工程系,马洪兵,2011年秋15数据类型字符串:表示形式与C语言类似,以双引号为标志遵守C语言的“”使用规则:换行——制表符——t引号——”清华大学电子工程系,马洪兵,2011年秋16标识符由字母、数字、下划线(_)、点(.)构成,但不能以数字开头指令助记符等保留字不能作标识符清华大学电子工程系,马洪兵,2011年秋17MIPS汇编程序语句格式指令与伪指令语句[Label:]Arg1,[Arg2],[A