MIPS汇编语言(课堂提问)_第1页
MIPS汇编语言(课堂提问)_第2页
MIPS汇编语言(课堂提问)_第3页
MIPS汇编语言(课堂提问)_第4页
MIPS汇编语言(课堂提问)_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

NJUSTwang0429s计算机科学与工程学院MIPS汇编语言序言:Q1:

和高级语言相比,低级语言有何优缺点?优点:(1)可以直接访问系统接口,汇编程序翻译成的机器语言程序效率高;(2)直接控制硬件,充分发挥硬件功能;(3)汇编语言程序代码质量高,占用内存空间少,执行速度快。缺点:编写难,难修改,难维护。Q2:为何需要学习汇编语言?便于理解如何更好地编写高级语言代码;有利于深入了解程序执行过程;有助于对高级语言程序机制的理解;Q3:汇编源程序和汇编程序分别是什么?汇编源程序是用汇编语言编写的程序;汇编程序是将汇编源程序转化为机器能识别的机器代码;Q4:根据机器指令体系,CPU分为哪两大类?典型代表有哪些?CPU两种架构:CISC(复杂指令集计算机),RISC(精简指令集计算机)CISC:Intel、80X86、8086;RISC:ARM系列;架构Q1:学习MIPS架构需要了解哪四个主要方面的内容?(1)寄存器用途;(2)指令集;(3)寻址方式;(4)数据类型;Q2:数据类型和高级语言中的数据类型有何不同?汇编语言中指:数据长度,有无符号等;高级语言中:字符型、整形等;Q3:MIPS架构中通用寄存器有多少个?一个寄存器多少位?(1)3232Q4:用于传递函数输入实参的寄存器是哪些?(1)a0—a3编号:4—7;Q5:用于存放函数返回值的寄存器是哪些?(1)v0和v1编号:2和3;Q6:在MIPS程序中,函数Main调用函数A,函数Main中有一个t0寄存器存放某个重要值,但函数A中有改变t0寄存器值的指令,若不希望函数A返回后t0寄存器值被改变,根据编程约定,应该如何保证t0寄存器值不变。(1)在main中入栈;Q7:和上题类似,若函数Main使用s0寄存器存放某个重要值,该如何做呢?(1)在A中入栈;Q8:保留给OS使用的寄存器是哪些?

保留给汇编程序使用的寄存器是?在这段指令中有哪个?k0和k1编号:26和27;at编号:1;Q9:用于存放函数的返回地址的寄存器是哪个?存放栈顶地址的寄存器是哪个?(1)ra编号:31;(2)sp编号:29;Q10:HI寄存器用于存放什么数据?LO寄存器用于存放什么数据?HI:乘积的高32位、余数;(2)LO:乘积的低32位、商;Q11:简述汇编源程序执行过程?(1)汇编源程序->目标程序->可执行程序;Q12:程序计数器寄存器PC存放什么值?为何一次递增4?何时递增?存放将要取出执行的指令所在内存单元的地址;32位MPIPS架构中定义的所有指令长度都为32位,因此每条指令取出后,PC增量值为4;Q13:画一个64KB的存储器。先计算所需内存单元数;再执笔画;Q14:现有一个如下存储器,在对齐要求下,取出地址为0003的一个字节。取出地址为0002的一个半字。取出地址为0001的一个字。Q15:内存分为几个部分?地址范围、地址空间、数据段、堆栈段;Q16:指令寄存器IR存放什么?MIPS指令有几种格式?(1)IR存放最近一条取出的指令;(2)MIPS指令三种格式:R、I、J;Q17:R指令有几段?

举一个指令例子。(1)R指令一共有六段:操作码(op)寄存器(rs、rt、rd)移位数值、功能号;Q18:I指令有几段?举一个指令例子。(1)I指令一共4个域;(2)addi$rt,$rs,imm语意:R[rt]=R[rs]+(IR15)^16IR15-0Q19:J

指令有几段?举一个指令例子。(1)J指令一共2个域;(2)jtarget;Q20:结合指令动画理解三种格式指令并描述指令执行过程。IF(取指)从指令缓存中获取下一条指令,放入IR;RD(从寄存器堆读)解码指令,读取寄存器堆中相应寄存器的内容;ALU(运算)在一个时钟周期内完成ALU的运算,浮点和乘除法除外;MEM(访问数据缓存)按照指令给定的地址,将寄存器的值读入/写入数据缓存;WB(写回)操作完成后,将得到的值保存到寄存器堆。寻址方式和指令集:Q1:操作数寻址方式有哪几种?分别是什么含义?寄存器寻址、立即数寻址、存储单元寻址(3种);寄存器寻址:在指令中指定寄存器名就是寄存器寻址;立即数寻址:满足了指令中需要常数的要求(I指令格式);存储单元寻址:CPU访问主存只能通过取数/存数("load/Store")指令;Q2:采用立即数寻址的指令是什么格式?采用寄存器寻址的指令是什么格式?(1)I指令格式;(2)R指令格式;Q3:采用存储单元寻址的指令是什么格式?什么写法?可以直接访问内存的指令有哪些?(1)load/store架构;(2)取数据字指令lwrt,offset(rs),存数据字指令swrt,offset(rs);(3)Q4:为何需要目标地址寻址?(1)Q5:寄存器间接寻址为何称为间接?采用寄存器间接寻址的指令是什么格式?有哪些指令

因为寄存器间接寻址是将指定的寄存器内容为地址,由该地址所指定的单元内容作为操作数;R指令格式;Q6:伪直接寻址为何称为伪?采用伪直接寻址的指令是什么格式?有哪些指令

?由于目标地址的高4位不会改变,导致指令的跳转范围比整个寻址空间小;指令格式:J指令格式;例:jtarjet;Q7:相对寻址为何称为相对?采用相对寻址的指令是什么格式?如何计算Imm?相对寻址以程序计数器的当前值为基地址,指令中的地址标号作为偏移量,将两者相加后得到操作数的有效地址。I指令格式;Imm=(y-x-4)>>2;y-x是目标地址和当前跳转指令的差值;Q8:从内存Mem取数据的指令有哪些?它们是什么种类的指令?取有符号字节类型数据指令格式lb;取无符号字节类型数据的指令lbu;取有符号半字数据类型指令lh取无符号半字类型数据指令lhu取字类型数据的指令lw加载立即数到寄存器指令lui存数据指令sbshsw;有关专用寄存器的指令mfhimflomthimtlo相关宏指令;Q9:带u和不带u指令的区别是什么?为何没有lwu?带u指令对象为无符号型数据;不带u的为有符号型数据;lw针对字类型数据字类型数据没有符号位;Q10:把寄存器中数据存放到Mem的指令有哪些?它们是什么种类的指令?(1)sbshsw(2)R型指令Q11:把HI寄存器值传送到通用寄存器的指令是什么?该指令是什么格式的?把通用寄存器值传送到LO寄存器的指令是什么?(1)mfhirdest(2)mfloRdest(3)mthiRsrc(4)mtloRsrcQ12:什么是宏指令?(1)宏指令是汇编语言程序中的一种伪指令;宏指令是代表某功能的一段源程序;Q13:如何把32位Imm存放到Mem中?(1)用la或者li指令;Q14:如何把16位Imm存放到Mem中?(1)Q15:写出宏指令li

$t0,

0xffffefff的实现代码。(1)Q16:通用寄存器之间传送数据的宏指令是什么?其如何实现?moveRdest,Rsrc将Rsrc寄存器中的数据复制到Rdest寄存器中;Q17:加法指令包括哪些?分别是什么类型的指令?带u和不带u有何区别?(1)add(R指令)addu(R指令)addi(I指令)addiu(I指令)Q18:减法指令包括哪些?分别是什么类型的指令?(1)sub(R指令)subu(R指令)Q19:减法指令为何不像加法指令那样有带i型指令?如何实现减去一个立即数?(1)减去一个立即数可以用加上一个负的立即数来代替;Q20:与减法指令相关的宏指令有哪些?(1)求补(neg)取绝对值(abs)Q21:求补宏指令能否对-2^31求补?(1)不能会越界;Q22:乘/除法指令包括哪些?是什么类型的指令?(1)乘法(multmultu)(2)除法(divdivu)都是R指令;Q23:与乘法指令相关的宏指令有哪些?(1)mulQ24:与除法指令相关的宏指令有哪些?(1)divdivuremremuQ25:与运算指令包括哪些?是什么类型的指令?(1)and(R指令)andi(I指令)Q26:或运算指令包括哪些?是什么类型的指令?(1)or(R指令)ori(I指令)Q27:异或运算指令包括哪些?是什么类型的指令?(1)xor(R指令)xori(I指令)Q28:或非指令含义是什么?非运算如何实现?(1)或运算加非运算Q29:逻辑左移指令包括哪些?是什么类型的指令?(1)sll(R指令)sllv(R指令)Q30:逻辑右移指令包括哪些?是什么类型的指令?(1)srl(R指令)srlv(R指令)Q31:算术右移指令包括哪些?是什么类型的指令?(1)sra(R指令)srav(R指令)Q32:为何没有算术左移指令?如何实现算术左移?(1)逻辑左移和算术左移在操作上是一致的;(2)算术左移:移动一位对应有符号数乘2,在低位的空位补0;Q33:循环左移宏指令如何实现?循环移位:移出的二进制位不丢失,填补到另一端;循环左移宏指令:rolrd,rs,rt/sa;实现:subu$at,$0,$rt;计算32-rt,得出值xsrlv$at,$rs,$at;逻辑右移x位sllvrd,rs,rt;orrd,rd,at;Q34:循环右移宏指令如何实现?(1)ror

rd,

rs,

rt

/

saQ35:条件设置指令包括哪些?是什么类型的指令?(1)slt

/

sltu

rd,

rs,

rt(2)slti

/

sltiu

rd,

rs,immQ36:条件设置宏指令有哪些?如何实现的?(1)seqrd,rs,rt(2)sgt/sgturd,rs,rt(3)sge/sgeurd,rs,rt(4)sle/sleurd,rs,rt(5)snerd,rs,rtQ37:无条件转移指令包括哪些?是什么类型的指令?(1)I指令(伪直接寻址)jlabel;jallabel;(2)R指令(寄存器间接寻址)jrjs;jalrrd,rs;(3)宏指令blable;实现:bgez$0,lable;Q38:条件转移指令包括哪些?是什么类型的指令?判断两个寄存器$s0和$s1中值符号是否相同的指令(1)I指令(相对寻址):beq/bners,rt,Labelbgez/bgezal/bgtz/blez/bltz/bltzalrs,Label宏指令:beqzrs,Label实现:beqrs,$0,Labelbge/bgeurs,rt,Label实现:slt/sltu$at,rs,rtbeq$at,$0,Labelbgt/bgturs,rt,Label实现:slt/sltu$at,rt,rsbne$at,$0,Label(为何不和1比较相等?)ble/bleurs,rt,Label实现:slt/sltu$at,rt,rsbeq$at,$0,Labelblt/blturs,rt,Label实现:slt/sltu$at,rs,rtbne$at,$0,Labelbnezrs,Label实现:bners,$0,LabelQ39:无条件转移宏指令如何实现?与j指令有何不同?(1)b

Label;(2)bgez

$0,

Label;Q40:条件转移宏指令包括哪些?如何实现的?(1)beqz

rs,

Label;实现:beq

rs,

$0,

Label;(2)bnez

rs,

Label;实现:bne

rs,

$0,

Label(3)bge/

bgeu

rs,

rt,

Label;实现:slt/

sltu

$at,

rs,

rtbeq

$at,

$0,

Label(4)bgt/

bgtu

rs,

rt,

Label;实现:slt/

sltu

$at,

rt,

rsbne

$at,

$0,

Label(5)ble/

bleu

rs,

rt,

Label;blt

/

bltu

rs,

rt,

Label;

andi

$t0,

$s0,

1eqz

$t0,

even…even:(6)abs

rd,

rs;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论