学习笔记:MIPS寻址(结合习题)

题目

MIPS版第二章39-42题,有关寻址。

概述

这道题主要考的是分支指令和跳转指令的寻址范围指令的寻址范围,相关知识点如下:

分支指令

分支指令的指令格式如下所示:

op reg reg address
6位 5位 5位 16位

从格式可以看到,留给地址的只有16位,因此它的寻址范围是PC周围的±215字(在32位机中,一个字是4个字节)即±217字节。

跳转指令

跳转指令的格式如下所示:

op address
6位 26位

从格式可以看到,留给地址的只有16位。因此它的寻址范围是PC周围的±226字(在32位机中,一个字是4个字节),即±228字节。MIPS跳转指令寻址采用伪直接寻址,跳转指令的目标地址由当前的PC的高4位与跳转指令的低26位左移2位后相加而成。

题目解析

2.39

这道题考察的是MIPS汇编。由于MPIS指令的长度是32位,指令中留给立即数的位数最多只有16位,因此需要分两步进行。首先,写t1寄存器的高16位,然后,写t2寄存器的低16位。

代码如下:

lui $t1, 0x2001
ori $t1, $t1, 0x4324

lui 指令将16位立即数放到目标寄存器高16位,目标寄存器的低16位填0,ori 指令将立即数与第二个寄存器中数的并一起送到第一个寄存器中,因此便完成了将一个32位数写入寄存器的操作。

2.40

由于j指令的跳转范围是±226个字,即±228个字节,因此最高跳转到0x0FFFFFFC。最后一位是C而不是F是因为MIPS对字寻址,无法寻址到具体某个字节。而题中的地址为0x20014324,因此跳转不到。

2.41

MIPS规定每执行一条指令,PC自动加4,因此分支指令从0x00000604开始。最大跳转17位,即增加0x1FFFC或者减少0x20000(17位补码所能表示的数的范围)。0x20014324不在这个范围内。

2.42

这里的初始PC增加0x1FFFC或者减少0x20000后可以到达0x20014324,因此可以跳转到该地址。

参考文献

备注

Author: Li Yunzhe

Contact: liyunzhe@whu.edu.cn

License: Copyright (c) 2019 Li Yunzhe

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 指令系统 程序功能:求两个数据之和并输出 运行结果:sum is 25 基本概念: 指令:是计算机硬件能够直接理解...
    我可能是个假开发阅读 10,541评论 0 5
  • 一、概要 1、数据的表示:数制及其转换、原码、反码、补码、移码、浮点数、溢出、算...
    _Jason___阅读 8,774评论 0 5
  • 80X86微处理器 一、80x86系列微处理器概况: 8086、8088、80286、80386、80486之后型...
    Zhou_qn阅读 10,204评论 0 4
  • 一、引言 嵌入式微处理器是嵌入式系统的核心器件,深入理解嵌入式微处理器的工作原理,组成结构、体系结构以及软件编程等...
    Leon_Geo阅读 4,438评论 0 2
  • 关于计算机的最小存储单位 有一篇帖子介绍的非常好为什么计算机最小的存储单位是字节?而最小到的传输单位是bit?我来...
    DeepCode阅读 7,471评论 0 2

友情链接更多精彩内容