MIPS指令集与汇编程序设计

上传人:灯火****19 文档编号:121020187 上传时间:2020-02-14 格式:PPT 页数:42 大小:4.14MB
返回 下载 相关 举报
MIPS指令集与汇编程序设计_第1页
第1页 / 共42页
MIPS指令集与汇编程序设计_第2页
第2页 / 共42页
MIPS指令集与汇编程序设计_第3页
第3页 / 共42页
MIPS指令集与汇编程序设计_第4页
第4页 / 共42页
MIPS指令集与汇编程序设计_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《MIPS指令集与汇编程序设计》由会员分享,可在线阅读,更多相关《MIPS指令集与汇编程序设计(42页珍藏版)》请在金锄头文库上搜索。

1、 MIPS32指令集 以经典的嵌入式处理器MIPS 4kc系列为参照 编程实例 指令分类 主要部分 不包括浮点 ADDAdd Word ADDIAdd Immediate Word ADDIU Add Immediate Unsigned Word ADDU Add Unsigned Word CLOCount Leading Ones in Word CLZ Count Leading Zeros in Word DIV Divide Word DIVU Divide Unsigned Word MADD Multiply and Add Word to Hi Lo MADDU Multip

2、ly and Add Unsigned Word to Hi Lo MSUB Multiply and Subtract Word to Hi Lo MSUBU Multiply and Subtract Unsigned Word to Hi Lo MUL Multiply Word to GPR MULT Multiply Word MULTU Multiply Unsigned Word SLT Set on Less Than SLTI Set on Less Than Immediate SLTIU Set on Less Than Immediate Unsigned SLTU S

3、et on Less Than Unsigned SUB Subtract Word SUBU Subtract Unsigned Word 算术 Arithmetic 指令 部分 举例 指令 Format 指令功能其它 ADDADD rd rs rtrd rs rt执行32位带符号整 数加法 如果补码运 算溢出则产生异常 ADDIADDI rt rs immediatert rs immediate 16位带符号立即数符 号扩展后执行加法 如果补码运算溢出则 产生异常 ADDUADDU rd rs rtrd rs rt 不产生异常 指令 Format 指令功能其它 CLOCLO rd rs

4、rd rs前导1的个数X86指令集中有类似 的BSF Bit Scan Forward BSR指 令 CLZCLZ rd rs rd rs前导0的个数 补充 lib c库中有相应的函数 ffs ffsl ffsll find first bit set in a word include int ffs int i include int ffsl long int i int ffsll long long int i 指令 Format 指令功能其它 MUL MUL rd rs rtrd rs rt32位整数相乘 结果 只保留低32位 Hi Lo寄存器无定义 MULT MULT rs rt

5、 HI LO rs rt32位带符号整数相乘 结果存于Hi Lo寄 存器 MULTU MULTU rs rt HI LO rs rt32位无符号整数相乘 结果存于Hi Lo寄 存器 DIVDIV rs rt HI LO rs rt32位带符号数 不会产生算术异常 即便除以0 DIVUDIVU rs rt HI LO rs rt32位无符号数 不会产生算术异常 即便除以0 指令 Format 指令功能其它 MADDMADD rs rt HI LO HI LO rs rt 32位带符号整数乘加 MADDU MSUB MSUBU SLT SLT rd rs rtrd rs rt 比较两个带符号32

6、位整数 比较结果 1或者0 存入rd寄存 器 SLTI SLTIU SLTU BEQ Branch on Equal BGEZ Branch on Greater Than or Equal to Zero BGEZALBranch on Greater Than or Equal to Zero and Link BGTZ Branch on Greater Than Zero BLEZ Branch on Less Than or Equal to Zero BLTZ Branch on Less Than Zero BLTZALBranch on Less Than Zero and L

7、ink BNE Branch on Not Equal J Jump JAL Jump and Link JALR Jump and Link Register JR Jump Register NOP 伪伪指令 No Operation SLL r0 r0 0 伪指令 分支 Branch 和跳转 Jump 指令 部分 指令控制 Instruction Control 指令 指令 Format 指令功能其它 BEQ BEQ rs rt offsetif rs rt then branch target offset sign extend offset 00 if rs rt then PC

8、PC target offset offset的宽度为16位 BGEZ BGEZ rs offsetif rs 0 then branch BGEZALBGEZAL rs offsetif rs 0 then procedure call GPR 31 PC 4 PC指的是下一条指令地址 delay slot 指令 Format 指令功能其它 JJ targetPC PC 高四位 target 00 target 26位 在当前的256MB对齐的 空间内跳转 JAL JAL targetGPR 31 PC 4 PC PC 高四位 target 00 在当前的256MB对齐的 空间内执行过程调用

9、 JALR JALR rs rd 31 implied JALR rd rs rd PC 4 PC rs 执行过程调用 过程入口 地址位于rs内 JRJR rsPC rs跳转至rs指定的地址 PC指的是下一条指令地址 delay slot LB Load Byte LBU Load Byte Unsigned LH Load Halfword LHU Load Halfword Unsigned LL Load Linked Word LW Load Word LWL Load Word Left LWR Load Word Right SB Store Byte SC Store Condi

10、tional Word SH Store Halfword SW Store Word SWL Store Word Left SWR Store Word Right 装载 Load 存储 Store 指令 部分 指令 Format 指令功能其它 LWLW rt offset base 从内存中读取一个字存入目的寄 存器 rt memory base offset offset是16位带符号整 数 地址必须4字节对齐 否 则产生异常 LB LB rt offset base 从内存中读取一个字节 符号 扩展后存入目的寄存器 rt sign extend memory base offsset

11、 offset是16位带符号整 数 LBU LBU rt offset base 无符号扩展 其他同上 SWSW rt offset base 从源寄存器读取字存入内存 SBSB rt offset base 从源寄存器读取低8位存入内存 非对齐Load Store指令 LWL LWR SWL SWR 配对使用 从内存中的非4对齐地址取入WORD存于寄存器 指令中的L 左 R 右 是针对寄存器而言的 举例 以小端为例 lwrrd 0 base 指令中的地址是目标word的最低字节地址 lwlrd 3 base 指令中的地址是目标word的最高字节地址 0 x330 x220 x110 x00

12、0 x770 x660 x550 x44 3 2 1 0 7 6 5 4 lwr rd 0 base lwl rd 3 base 44332211 LL SC指令 在多线程程序中 为了实现对 共享变量的互斥 访问 一般需要一个TestAndSet的原子操作 这种原子操作是需要专门 的硬件支持才能完成的 在MIPS中 是通过特殊的Load Store指令 LL Load Linked 链接加载 以及SC Store Conditional 条件存储 这一指令对完成的 当使用 LL 指令从内存中读取一个字之后 处理器会记 住 LL 指令的这次操作 同时 LL 指令读取的地址 也会 保存在处理器的寄

13、存器中 接下来的 SC 指令 会检查上次 LL 指令执行后的 操作 是否是原子操作 即不存在其它对这个地址的操作 如果是原子操作 则 V0 下一页的示例 的值将会 被更新至内存中 同时 V0 的值也会变为1 表示操 作成功 反之 如果不是原子操作 即存在其它对这个地址的 访问冲突 则V0 的值不会被更新至内存中 且 V0的值也会变为0 表示操作失败 AND And ANDI And Immediate LUI Load Upper Immediate NOR Not Or OR Or ORI Or Immediate XOR Exclusive Or XORI Exclusive Or Imm

14、ediate MFHI Move From HI Register MFLO Move From LO Register MOVN Move Conditional on Not Zero MOVZ Move Conditional on Zero MTHI Move To HI Register MTLO Move To LO Register SLL Shift Word Left Logical SLLV Shift Word Left Logical Variable SRA Shift Word Right Arithmetic SRAV Shift Word Right Arith

15、metic Variable SRL Shift Word Right Logical SRLV Shift Word Right Logical Variable 转移 Move 指令6条 逻辑 Logical 指令8条 移位 Shift 指令6条 指令 Format 指令功能其它 ANDAND rd rs rt针对32位寄存器执行逻 辑与操作 rd rs AND rt ANDIANDI rt rs immediate 针对32位寄存器与立即 数 0扩展后 执行逻辑 与操作 rt rs AND zero extend immediate LUILUI rt immediate 将16位立即数

16、装入目的寄 存器的高16位 低16位 清0 rt immediate 00 0 16 MOVZMOVZ rd rs rt 条件移动 if rt 0 then rd rs SLLSLL rd rt sa 左移操作 rd rt sa sa是一个5位立即数 无符号 SLLVSLLV rd rt rs 左移操作 寄存器rs的低5位表示左移的 位数 BREAK Breakpoint SYSCALL System Call TEQ Trap if Equal TEQI Trap if Equal Immediate TGE Trap if Greater or Equal TGEI Trap if Greater of Equal Immediate TGEIU Trap if Greater or Equal Immediate Unsigned TGEU Trap if Greater or Equal Unsigned TLT Trap if Less Than TLTI Trap if Less Than Immediate TLTIU Trap if Less Than Immediat

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号