美文网首页
计组2-10 MIPS中32位立即数和寻址

计组2-10 MIPS中32位立即数和寻址

作者: 这个杀手蹲了半天有点冷 | 来源:发表于2018-11-28 17:34 被阅读0次

32位立即数

一般来讲常量不会多余16位,以防万一所以出现了lui(高位)和ori(低位)的指令

lui $s0, 61把61加载到高16位
ori $s0, 52把52加载到低16位

注意:指令addi是将指令最左边的16位立即数复制到高16位去

分支和跳转中的寻址

MIPS的跳转指令j是最简单的寻址方式,除了6位操作码其余26位为地址
分支指令除地址外还须指定两个操作数
bne $s, $s1, Exit
分别占6位、5位、5位、16位,其中程序地址为16位太小,意味着程序不能大于2^16
解决办法是指定一个加到分支地址的寄存器
程序计数器(PC) = 寄存器 + 分支地址
PC包含了原有的16位当前指令地址,其余的16位作为下一个指令地址,这样转移2^15个字到达下一指令
这就是PC相对寻址。

Loop:
  bne $t0, $s5, Exit//这里的Exit是一个分支地址2个字或者8个字节
  xxxxxxxxxxxxxxx//不会执行本行代码,因为PC收到上一行的2个或8个字节的地址,所以本行地址 + 2字 或 8字节,直接跳到Exit
  j Loop
Exit:

此过程中没用使用(+12跳转)也没有用完整目的地址。

如果要跳转很远距离,可在跳转指令附近加一个j Exit

相关文章

  • 计组2-10 MIPS中32位立即数和寻址

    32位立即数 一般来讲常量不会多余16位,以防万一所以出现了lui(高位)和ori(低位)的指令例lui $s0,...

  • 汇编语言中@,#是什么含义

    "#"表示立即数寻址。采用立即寻址方式的指令,在立即数前面加上立即寻址符“#”。例如指令MOV A,#30H中30...

  • 立即数寻址方式

    数据寻址方式:查找操作数或操作数存放位置的方法,不同于程序寻址方式。 数据寻址方式主要有3大类: 操作数包含在指令...

  • 寻址方式

    寄存器寻址 不涉及内存,将寄存器 eax 中的内容放到寄存器 edx 中: 立即寻址 不涉及内存,将立即数放到 e...

  • 汇编语言

    第三章 寻址方式 立即数寻址 操作数为立即数存放在指令中。可以是8位也可以是16位 如:MOV AX,9670H ...

  • ARM笔记

    一、寻址方式 立即数寻址 如:MOV R0, #6;表示:R0 <- 6; 寄存器寻址(直接寻址) 如:ADD R...

  • MIPS | 轻量级mips汇编指令转机器指令(Python实现

    当前版本仅支持常用mips汇编指令(在变量r_dict,i_dict和j_dict中列出),不支持立即数的非十进制...

  • 内存

    寻址公式一:【立即数】 读取内存的值 向内从中写数据 获取内存编号 公式寻址二:[reg] reg代表寄存器可以是...

  • 微处理器指令系统,寻址方式及基本汇编指令

    数据寻址方式 一、立即数寻址 MOV AX,0102H; 指令代码:B8 02 01注意:按照低对低、高对高的小端...

  • 内存寻址

    1、寻址公式一:【立即数】 mov eax,dword ptr ds:[0x12FF5C] mov dword p...

网友评论

      本文标题:计组2-10 MIPS中32位立即数和寻址

      本文链接:https://www.haomeiwen.com/subject/tskzqqtx.html