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

LC-3—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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

之墨_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值