LC-3—MIOMMIOCaller SaveCallee Save

Posted 之墨_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LC-3—MIOMMIOCaller SaveCallee 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

以上是关于LC-3—MIOMMIOCaller SaveCallee Save的主要内容,如果未能解决你的问题,请参考以下文章

011111100 在此 LC-3 代码中指的是啥?

LC-3 汇编语言 指令集

计算机系统实验二 LC-3机器码编程试验

计算机系统实验四 LC-3简单游戏设计

composer安装

LC 3. 无重复字符的最长子串