欢迎来到天天文库
浏览记录
ID:5355771
大小:721.93 KB
页数:10页
时间:2017-12-08
《mips 体系结构和汇编语言快速入门》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、MIPS体系结构和汇编语言快速入门译者:SonicFu,NortheasternUniversity,Boston,MA,USA译者按:有修改,无删减,初学必读。学习笔记,抛砖引玉!网上有一个老版本,不如此版全面。英文原版:http://logos.cs.uic.edu/366/notes/mips%20quick%20tutorial.htm#IOSystemCalls本文分3部分:1、寄存器2、程序结构框架3、编写汇编程序概要:数据类型和文法数据类型:字节,byte占用(8bit),halfword占2byte=16bit),word占用(4byte=3
2、2bit)一个字符需要一个Byte的空间;一个整数需要1个Word(4Byte)的空间;MIPS结构的每条指令长度都是32bit寄存器MIPS体系架构有32个通用寄存器。在汇编程序中,可以用编号$0到$31来表示;也可以用寄存器的名字来进行表示,例如:$sp,$t1,$ra….有两个特殊的寄存器Lo,Hi,用来保存乘法/除法的运算结果;此2寄存器不能直接寻址,只能用特殊的指令:mfhi和mflo来aceess其中的内容。(含义:mfhi=movefromHi,mflo=MovefromLow.)堆栈(Stack)的增长方向是:从内存的高地址方向,
3、向低地址方向;表格1:寄存器的编号名称及分类编号寄存器名称寄存器描述0Zero第0号寄存器,其值始终为01$at(AssemblerTemporary)是Assembler保留的寄存器2~3$v0~$v1(values)保存表达式或函数返回的结果(arguments)作为函数的前四个入参。在子函数调用的过程中不4-7$a0-$a3会被保留。(temporaries)Callersavedifneeded.Subroutinescanusewithout8-15$t0-$t7saving.供汇编程序使用的临时寄存器。在子函数调用的过程中不会被保留。(savedv
4、alues)-Calleesaved.16-23$s0-$s7Asubroutineusingoneofthesemustsaveoriginalandrestoreitbeforeexiting.在子函数调用的过程中会被保留。(temporaries)Callersavedifneeded.Subroutinescanusewithout24-25$t8-$t9saving.供汇编程序使用的临时寄存器。在子函数调用的过程中不会被保留。这是对$t0-$t7的补充。26-27$k0-$k1保留,仅供中断(interrupt/trap)处理函数使用.globalp
5、ointer.全局指针。Pointstothemiddleofthe64Kblockof28$gpmemoryinthestaticdatasegment.指向固态数据块内存的64K的块的中间。29$spstackpointer堆栈指针,指向堆栈的栈顶。savedvalue/framepointer保存的值/帧指针30$s8/$fp其中的值在函数调用的过程中会被保留31$rareturnaddress返回地址汇编程序结构框架汇编源程序代码本质上是文本文件。由数据声明、代码段两部分组成。汇编程序文件应该以.s为后缀,以在Spim软件中进行模拟。(实际上ASM也行
6、。)数据声明部分在源代码中,数据声明部分以.data开始。声明了在代码中使用的变量的名字。同时,也在主存(RAM)中创建了对应的空间。程序代码部分在源代码中,程序代码部分以.text开始。这部分包含了由指令构成的程序功能代码。代码以main:函数开始。main的结束点应该调用exitsystemcall,参见后文有关systemcall的介绍。程序的注释部分使用#符号进行注释。每行以#引导的部分都被视作注释。一个MIPS汇编程序框架:#Commentgivingnameofprogramanddescriptionoffunction#Template.s#B
7、are-bonesoutlineofMIPSassemblylanguageprogram.data#variabledeclarationsfollowthisline#....text#instructionsfollowthislinemain:#indicatesstartofcode(firstinstructiontoexecute)#...#Endofprogram,leaveablanklineafterwardstomakeSPIMhappy编写MIPS汇编程序:Content:PartI:数据的声明PartII:数据的装载和保存(Load/
8、Store指令)PartIII:寻址P
此文档下载收益归作者所有