數據傳送指令之:單寄存器的Load/Store指令
5.3.4 用戶模式字數據傳送指令(LDRT/STRT)
1.LDRT指令
(1)指令編碼格式
LDRT指令用于從內存中將一個32位的字讀取到目標寄存器。
指令的編碼格式如圖5.9所示。
LDRT指令根據addr_mode>所確定的地址模式將一個32位字讀取到指令中的目標寄存器Rd>。如果指令中的尋址方式確定的地址不是字對齊的,則讀出的數值要進行循環(huán)右移。所移位數為尋址方式確定的地址bits[1∶0]的8倍。也就是說處理器將取到的數值作為字的最低位處理。
圖5.9 LDRT指令編碼格式
當處理器在特權模式下使用此指令時,內存系統將該操作當作一般用戶模式下得內存訪問指令。
注意 | 指令的編碼格式中,P位指定位“0”,也就是說LDRT指令的尋址方式為固定尋址方式,即后索引編碼尋址(post_indexed_addressing_mode)。 |
(2)指令的語法格式
LDR{cond>}T Rd>,post_indexed_addressing_mode>
① cond>
為指令編碼中的條件域。它指示LDRT指令在什么條件下執(zhí)行。當cond>忽略時,指令為無條件執(zhí)行(cond=AL(Alway))。
② Rd>
確定使用哪個通用寄存器作為目標寄存器。
③ post_indexex_address_mode>
使用后索引地址模式尋址。
注意 | 后索引地址模式中P=0并且W=0(即bit[21]=0、bit[24]=0)。但此指令P=0并且W=1(即bit[21]=1、bit[24]=0)。但實際的尋址操作是一樣的。 |
(3)指令操作的偽代碼
指令操作的偽代碼如下面程序段所示。
If ConditionPassed{cond} then
If address[1:0]==0b00
Rd=Memory[address,4]
Else if address[1:0]==0b01
Rd=Memory[address,4] Rotate_Right 8
Else if address[1:0]==0b10
Rd=Memory[address,4] Rotate_Right 16
Else address[1:0]==0b11
Rd=Memory[address,4] Rotate_Right 24
2.STRT指令
(1)指令編碼格式
STRT指令用于將一個32位的字數據寫入到指令中指定的內存單元。
當處理器在特權模式下執(zhí)行此指令時,內存系統將該操作當作一般用戶模式下的內存訪問操作。
指令的編碼格式如圖5.10所示。
圖5.10 STR指令編碼格式
(2)指令的語法格式
STR{cond>}T Rd>,post_indexed_addressing_mode>
① cond>
為指令編碼中的條件域。它指示STRT指令在什么條件下執(zhí)行。當cond>忽略時,指令為無條件執(zhí)行(cond=AL(Alway))。
② Rd>
確定使用哪個通用寄存器作為目標寄存器。
③ post_indexed_address_mode>
使用后索引地址模式尋址,參見LDRT指令。
(3)指令操作的偽代碼
指令操作的偽代碼如下面程序段所示。
If ConditionPassed{cond} then
Memory[address,4]=Rd
存儲器相關文章:存儲器原理
評論