资源描述:
《《计算机指令系统》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第9讲计算机指令系统数字逻辑与处理器MIPS模拟器MIPS汇编语言程序设计一个排序算法的实例计算机指令系统(2)MIPS模拟器SPIMSPIM是主要的MIPS模拟器,能够运行和调试MIPS汇编语言程序SPIM支持Uinx、Windows等多个操作系统平台http://pages.cs.wisc.edu/~larus/spim.htmlMIPS模拟器寄存器窗口正文段数据与堆栈段SPIM消息MIPS模拟器MARSMARS是MIPSAssemblerandRuntimeSimulator(MIPS汇编器和运行时模拟器)的缩写能够运行和调试MIPS汇
2、编语言程序MARS采用Java开发,跨平台http://courses.missouristate.edu/KenVollmar/MARS/MIPS模拟器MIPS的寻址方式MIPS模拟器MIPS汇编语言程序设计计算机指令系统(2)MIPS汇编器:语法注释行以“#”开始;标识符由字母、下划线(_)、点(.)构成,但不能以数字开头,指令操作码是一些保留字,不能用作标识符;标号放在行首,后跟冒号(:),例如2021/9/168.data#将子数据项,存放到数据段中Item:.word1,2#将2个32位数值送入地址连续的内存字中.text#将子串即
3、指令或字送入用户文件段.globalmain#必须为全局变量Main:lw$t0,itemMIPS汇编中的命令见Page625MIPS汇编语言程序设计:MIPS汇编语言语句格式指令与伪指令语句[Label:]Arg1,[Arg2],[Arg3][#comment]汇编命令(directive)语句[Label:].Directive[arg1],[arg2],...[#comment]MIPS汇编语言程序设计汇编命令directive)汇编器用来定义数据段、代码段以及为数据分配存储空间.data[address]#定义数据段#[add
4、ress]为可选的地址.text[address]#定义正文段(即代码段)#[address]为可选的地址.alignn#以2n字节边界对齐数据#只能用于数据段MIPS汇编语言程序设计汇编命令.ascii#在内存中存放字符串.asciiz#在内存中存放NULL结束的#字符串.wordw1,w2,...,wn#在内存中存放n个字.halfh1,h2,...,hn#在内存中存放n个半字.byteb1,b2,...,bn#在内存中存放n个字节MIPS汇编器:存储器中位置汇编语言源文件:.s“.”MIPS汇编命令标识符
5、“label:”label被赋值为当前位置的地址Fact=0x00400100编译时就确定了汇编程序在地址0x00400000开始2021/9/1612move$s5,$31jalfactsw$s0,f($0).text0x00400100fact:addiu$s0,$0,1lw$s1,n($0)loop:mul$s0,$s1,$s0addi$s1,$s1,-1bnez$s1,loopjr$31.data0x10000200n:.word4f:.word00x004000200x004000240x00400028…0x004001000x0
6、04001040x004001080x0040010C0x004001100x00400114…0x100002000x10000204能运行的版本(1):.textmain:ori$s6,$0,0x1000sll$s6,$s6,16addiu$s4,$s6,0x0200#$s4=naddiu$s5,$s6,0x0204#$s5=fbeq$0,$0,factresult:sw$s0,0($s5)jr$ra#跳出main2021/9/1613.text0x00400100fact:addiu$s0,$0,1lw$s1,0($s4)#$s0=n!
7、loop:mul$s0,$s1,$s0addi$s1,$s1,-1bnez$s1,loop#f=n!jresult.data0x10000200n:.word4f:.word0.data0x10000000.word4,0.textmain:ori$s6,$0,0x1000sll$s6,$s6,16addiu$s5,$s6,0x004fact:addiu$s0,$0,1lw$s1,0($s6)loop:mul$s0,$s1,$s0addi$s1,$s1,-1bnez$s1,loopsw$s0,0($s5)jr$ra14#下列语句行是数据代码行
8、#定义了两个字型立即数4和0#下列语句行是指令代码行#获得数据起始地址#$s6=0x10000000#$s5=0x10000004#循环计数器赋初值#把word型数