三河市城鄉(xiāng)建設(shè)局網(wǎng)站淘寶指數(shù)查詢?nèi)肟?/h1>
LC-3—MMIO、Caller Save、Callee Save
- MMIO
- Caller Save、Callee Save
- 舉個例子
MMIO
- MMIO(Memory Mapped I/O)是一種在系統(tǒng)內(nèi)存中映射I/O端口的技術(shù),它允許設(shè)備直接訪問內(nèi)存中的特定地址,從而實(shí)現(xiàn)I/O操作。MMIO技術(shù)可以提高I/O操作的效率,并減少CPU的負(fù)擔(dān)。
- LC-3的MMIO技術(shù)可以提高I/O操作的效率,并減少CPU的負(fù)擔(dān)。使用MMIO時,可以將特定的I/O端口映射到系統(tǒng)內(nèi)存的特定地址,從而可以使用LD指令將數(shù)據(jù)從I/O端口加載到寄存器,或者用ST指令將數(shù)據(jù)從寄存器存儲到I/O端口。
- 例如,假設(shè)我們想要從系統(tǒng)中的I/O端口0xFE00處讀取一個字節(jié)的數(shù)據(jù)。我們可以將I/O端口0xFE00映射到系統(tǒng)內(nèi)存的地址x3000,然后使用LD指令將x3000處的數(shù)據(jù)加載到R0中:LD R0, x3000。這樣,R0中就包含了從I/O端口0xFE00處讀取的數(shù)據(jù)。
; 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指令允許處理器向外部設(shè)備寫入數(shù)據(jù),而MIO指令則僅允許處理器從外部設(shè)備讀取數(shù)據(jù)。MIO指令不支持向外部設(shè)備寫入數(shù)據(jù),因?yàn)檫@樣會破壞物理硬件的一致性和穩(wěn)定性。MMIO指令的設(shè)計更加安全,因此才能用于處理器與外部設(shè)備之間的數(shù)據(jù)交換。
- MIO.EN是一個特殊的LC-3指令,可用于啟用/禁用處理器的MIO功能。當(dāng)MIO.EN指令將MIO功能禁用時,處理器將不能從外部設(shè)備讀取數(shù)據(jù),但可以繼續(xù)使用MMIO指令向外部設(shè)備寫入數(shù)據(jù)
Caller Save、Callee Save
- 進(jìn)入子程序前保存,子程序結(jié)束后恢復(fù)的是調(diào)用者保存Caller Save:
- 進(jìn)入子程序后先保存,子程序結(jié)束前恢復(fù)的再返回原位置的,是被調(diào)用者保存Callee Save
舉個例子
- 把對fib的函數(shù)調(diào)用看成整體而言的,R7在調(diào)用函數(shù)的內(nèi)部總是會被修改為返回地址,所以R7在調(diào)用fib之前,需要由調(diào)用者保存。而R0和R2在調(diào)用過程中也會被修改,但是fib函數(shù)最后會還原這兩個值
- 所以R7是Caller Save、R0R2是Callee Save