资源描述:
《MIPS指令系统(2010-4-22)资料.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、MIPS指令系统TANZHIHU汇编语言CPU主要工作:执行指令指令是CPU执行最主要的操作不同类型的CPU执行不同指令集InstructionSetArchitecture(ISA).Intel80x86(Pentium4),IBM/MotorolaPowerPC(Macintosh),MIPS,IntelIA64,...Page2MIPS体系结构MIPS公司发布了第一个商用RISC结构本课程将讨论MIPS的一些细节为什么选择MIPS而不是Intel80x86?MIPS简洁雅致,不会陷入繁琐的细节.MIPS广泛应用于嵌入式应用X86平台主要应用于PC领域Page3汇编语言的变量---寄
2、存器汇编语言不能使用变量(C、JAVA可以)Inta;floatb;寄存器变量没有数据类型汇编语言的操作对象是寄存器好处:寄存器是最快的数据单元缺陷:寄存器数量有限编程必须小心,仔细的高效使用各寄存器MIPS寄存器字长---32bits=1WordMIPS指令集包括32个通用寄存器32registersinMIPS$0,$1,$2,…$30,$31Page432个MIPS寄存器Page5寄存器编号MIPS助记符释义备注0$Zero固定值为0硬件置位2~3$v0~$v1函数调用返回值4~7$a0~$a3函数调用参数4个参数8~15$t0~$t7暂存寄存器8个参数16~23$s0~$s7通用
3、寄存器调用之前需保存24~25$t8~$t9暂存寄存器2个28$gp全局指针29$sp堆栈指针30$fp帧指针31$ra函数返回地址1$at汇编器保留26~27$k0~$k1操作系统保留加减指令加法a=b+c(inC)add$s0,$s1,$s2(inMIPS)C语言变量a,b,c编译后对应寄存器$s0,$s1,$s2减法d=e–f(inC)sub$s3,$s4,$s5(inMIPS)C语言变量d,e,f编译后对应寄存器$s3,$s4,$s5Page6加减指令如何编译下面的C语言表达式?a=b+c+d-e;编译成多行汇编指令add$t0,$s1,$s2#temp=b+cadd$t0,$t0
4、,$s3#temp=temp+dsub$s0,$t0,$s4#a=temp-e一个简单的C语言表达式变成多行汇编语句#号后面是注释Page7内存数据访问指令lwswlbsblhsh读内存指令g=h+A[8];(inC)lw$t0,32($s3)#$t3为A[0]地址(inMIPS)add$s1,$s2,$t0#g=h+A[8]变址寻址偏移量+基址寄存器写内存指令A[12]=h+A[8];lw$t0,32($t3)#getA[8](inMIPS)add$t0,$s2,$t0#A[12]=h+A[8]sw$t0,48($s3)#storeA[12]Page8加立即数常数相加指令g=g+4;(
5、inC)Lw$t0,0($s3)#$t0=4$s3=Address(4)add$s1,$s1,$t0#g=g+4立即数相加指令addi$s3,$s3,4#$s3=$s3+4(inMIPS)Page9指令实例语义注释加add$s1,$s2,$s3$s1=$s2+$s3寄存器寻址减sub$s1,$s2,$s3$s1=$s2-$s3寄存器寻址加立即数addi$s1,$s2,100$s1=$s2+100寄存器寻址+立即数寻址取字lw$s1,100($s2)$s1=Mem[$s2+100]寄存器寻址+变址寻址存字sw$s1,100($s2)Mem[$s2+100]=$s1寄存器寻址+变址寻址条件判断
6、指令beqreg1,reg2,labelC语言条件判断指令If(a==b){i=1;}else{i=2;}等效C指令If(a==b)gotoL1;i=2;gotoL2;L1:i=1;L2:Page10等效MIPS指令beq$s0,$s1,L1addi$s3,$Zero,2jL2;L1:addi$s3,$Zero,1L2:MIPS数据传送指令addi$s3,$Zero,1#$s3=1add$s3,$2,$Zero#$s3=$s2MIPS条件判断指令条件跳转If(reg1==reg2)gotoLabel1(C语言)beqreg1,rege2,Label1(MIPS指令)bnereg1,rege
7、2,Label2无条件跳转指令gotoLabel;(C语言)Jlabel(MIPS指令)beq$Zero,$Zero,label(MIPS指令)Page11逻辑运算移位指令a=b<<2;C语言sll$s1,$s2,2#shiftleftsrl$s1,$s2,2#shiftright逻辑运算and$t0,$t1,$t2#t0=t1&t2or$t0,$t1,$t2#t0=t1
8、t2andi$t0,$t1,100