当前位置: 首页 > news >正文

LC-3—MIO、MMIO、Caller Save、Callee Save

LC-3—MMIO、Caller Save、Callee Save

  • MMIO
  • Caller Save、Callee Save
    • 举个例子

MMIO

  • MMIO(Memory Mapped I/O)是一种在系统内存中映射I/O端口的技术,它允许设备直接访问内存中的特定地址,从而实现I/O操作。MMIO技术可以提高I/O操作的效率,并减少CPU的负担。
  • LC-3的MMIO技术可以提高I/O操作的效率,并减少CPU的负担。使用MMIO时,可以将特定的I/O端口映射到系统内存的特定地址,从而可以使用LD指令将数据从I/O端口加载到寄存器,或者用ST指令将数据从寄存器存储到I/O端口。
  • 例如,假设我们想要从系统中的I/O端口0xFE00处读取一个字节的数据。我们可以将I/O端口0xFE00映射到系统内存的地址x3000,然后使用LD指令将x3000处的数据加载到R0中:LD R0, x3000。这样,R0中就包含了从I/O端口0xFE00处读取的数据。
; Program to read data from an I/O device 
; R0 contains the I/O device address 
IN R1, R0 
STR R1, x3000 
; R1 contains the data read from the device, which is stored in memory location x3000
; Program to write data to an I/O device 
; R0 contains the I/O device address 
; R1 contains the data to be written 
MOV R2, R1 
OUT R2, R0 
; Data in R1 is written to the device
  • MMIO指令允许处理器向外部设备写入数据,而MIO指令则仅允许处理器从外部设备读取数据。MIO指令不支持向外部设备写入数据,因为这样会破坏物理硬件的一致性和稳定性。MMIO指令的设计更加安全,因此才能用于处理器与外部设备之间的数据交换。
  • MIO.EN是一个特殊的LC-3指令,可用于启用/禁用处理器的MIO功能。当MIO.EN指令将MIO功能禁用时,处理器将不能从外部设备读取数据,但可以继续使用MMIO指令向外部设备写入数据

Caller Save、Callee Save

  • 进入子程序前保存,子程序结束后恢复的是调用者保存Caller Save:
  • 进入子程序后先保存,子程序结束前恢复的再返回原位置的,是被调用者保存Callee Save

举个例子

在这里插入图片描述
在这里插入图片描述

  • 把对fib的函数调用看成整体而言的,R7在调用函数的内部总是会被修改为返回地址,所以R7在调用fib之前,需要由调用者保存。而R0和R2在调用过程中也会被修改,但是fib函数最后会还原这两个值
  • 所以R7是Caller Save、R0R2是Callee Save
http://www.lryc.cn/news/22941.html

相关文章:

  • SQL注入报错注入之floor()报错注入原理分析
  • 2023CS双非保研985经验分享(南大、华科、中科大科学岛、国防科大、西交、中南、深圳大学、北邮、中科院等)
  • Shell中的IFS
  • Java学习线路图--书籍推荐
  • 【GO】k8s 管理系统项目23[前端部分–工作负载-Pod]
  • rabbitmq在linux系统下安装步骤
  • 阿里测试员晒薪资条,看完真的扎心了...
  • 内网渗透辅助工具集Yasso
  • Spring笔记(1):概述
  • 工程机械焊接件焊接结构件三维扫描检测外观质量控制-CASAIM三维扫描检测仪
  • 使用linux部署项目步骤
  • pt02-list-tuple-dir
  • 高端电器新十年,求解「竞速突围」
  • [Android Studio] Android Studio使用keytool工具读取Debug 调试版数字证书以及release 发布版数字证书
  • 2023年金三银四必备软件测试常见面试题1500问!!!【测试思维篇】
  • 推荐四款自用的电脑神器
  • CSDN 竞赛 32 期
  • 【路径规划】基于前向动态规划算法在地形上找到最佳路径(Matlab代码实现)
  • spring boot maven打包jar包太大,怎么办?这个方法解决你的烦恼
  • Spring之AOP理解及使用
  • 微信小程序和webview使用postMessage交互
  • pytorch-自动求导机制,构建计算图进行反向传播,需要注意inplace操作导致的报错,梯度属性变化
  • 【Project】项目管理软件学习笔记
  • 【算法设计-分治思想】快速幂与龟速乘
  • Kafka(十一) 如何保证数据的不重复和不丢失
  • 解决树莓派 bullseye (11) 系统无法通过 xrdp 远程连接的问题
  • 微信公众号历史作品定向采集
  • Vue学习笔记(3)
  • Marshmallow 库
  • 【BN层的作用】论文阅读 | How Does Batch Normalization Help Optimization?