• 沒有找到結果。

指令格式:sce [rA]+

在文檔中 嵌入式微處理器 (頁 50-53)

sce 指令將特殊暫存器 SCR 中的資料存儲到記憶體中,存儲位址由 rA&0xfffffffc 確定。完成 操作後,暫存器 rA 的內容自動增加 4。存儲資料量和位址取決於處理器 Endian 模式和暫存 器 rA 中最低有效 2 位。由於在對記憶體進行存取操作時 rA 的最低兩位被截去,所以不會發 生位址對齊錯誤。該指令與 scb、scw 配合可以完成對非對齊位址資料的存取。

2.3.2 資料處理指令

S+core7 處理器的資料處理指令大致可以分為六類:算術運算指令、邏輯運算指令、位運算 指令、資料傳送指令、移位運算指令和擴展操作指令。大多數的資料處理指令都可以選擇.c 尾碼,表示是否需要影響條件旗標位元參與運算。表 2-5所示為 S+core7 的資料處理指令表。

表 2-5 S+core7 資料處理指令表

助記符 說明 格式

add{.c} 加法運算 add{.c} rD, rA, rB addc{.c} 帶進位加法運算 addc{.c} rD, rA, rB addi{.c} 立即數加法運算 addi{.c} rD, SImm16 addis{.c} 移位立即數加法運算 addis{.c} rD, SImm16 addri{.c} 暫存器立即數加法運算 addri{.c} rD, rA, SImm14 sub{.c} 減法運算 sub{.c} rD, rA, rB subc{.c} 帶借位減法運算 subc{.c} rD, rA, rB subi{.c} 立即數減法運算 subi{.c} rD, SImm16 subis{.c} 移位立即數減法運算 subis{.c} rD, SImm16 subri{.c} 暫存器立即數減法運算 subri{.c} rD, rA, SImm14 neg{.c} 取負 neg{.c} rD, rB

cmp{TCS}.c 比較 cmp{TCS}.c rA, rB

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 50 V1.1 - Agu 29, 2007

助記符 說明 格式

cmpi.c 立即數比較 cmpi.c rA, SImm16 cmpz{TCS}.c 零比較 cmpz{TCS}.c rA

mul 乘法運算 mul rA, rB

mulu 無符號數乘法運算 mulu rA, rB

div 除法運算 div rA, rB

divu 無符號數除法運算 divu rA, rB and{.c} 邏輯與 and{.c} rD, rA, rB andi{.c} 立即數邏輯與 andi{.c} rD, Imm16 andis{.c} 移位立即數邏輯與 andis{.c} rD, Imm16 andri{.c} 暫存器立即數邏輯與 andri{.c} rD, rA, Imm14 or{.c} 邏輯或 or{.c} rD, rA, rB ori{.c} 立即數邏輯或 ori{.c} rD, Imm16 oris{.c} 移位立即數邏輯或 oris{.c} rD, Imm16 orri{.c} 暫存器立即數邏輯或 orri{.c} rD, rA, Imm14 xor{.c} 邏輯異或 xor{.c} rD, rA, rB not{.c} 邏輯異非 not{.c} rD, rA t{cond} 測試並置 T 條件旗標 t{cond}

bittst.c 位測試 bittst.c rD, BN bitset.c 位置位 bitset.c rD, rA, BN bitclr.c 位清零 bitclr.c rD, rA, BN bittgl.c 位翻轉 bittgl.c rD, rA, BN mv{cond} 資料傳送(有條件) mv{cond} rD, rA mtcr 傳送資料到控制暫存器 mtcr rD, Crn mfcr 從控制暫存器傳送資料 mfcr rD, Crn rol{.c} 迴圈左移 rol{.c} rD, rA, rB rolc.c 帶進位迴圈左移 rolc.c rD, rA, rB roli{.c} 立即數迴圈左移 roli{.c} rD, rA, Imm5 rolic.c 立即數帶進位迴圈左移 rolic.c rD, rA, Imm5

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 51 V1.1 - Agu 29, 2007

助記符 說明 格式

ror{.c} 迴圈右移 ror{.c} rD, rA, rB rorc.c 帶進位迴圈右移 rorc.c rD, rA, rB rori{.c} 立即數迴圈右移 rori{.c} rD, rA, Imm5 roric.c 立即數帶進位迴圈右移 roric.c rD, rA, Imm5 sll{.c} 邏輯左移 sll{.c} rD, rA, rB slli{.c} 立即數邏輯左移 slli{.c} rD, rA, Imm5 sra{.c} 算術右移 sra{.c} rD, rA, rB srai{.c} 立即數算術右移 srai{.c} rD, rA, Imm5 srl{.c} 邏輯右移 srl{.c} rD, rA, rB srli{.c} 立即數邏輯右移 srli{.c} rD, rA, Imm5 extsb{.c} 擴展有符號位元組資料 extsb{.c} rD, rA extzb{.c} 擴展無符號位元組資料 extzb{.c} rD, rA extsh{.c} 擴展有符號半字資料 extsh{.c} rD, rA extzh{.c} 擴展無符號半字資料 extzh{.c} rD, rA

1. 算術運算指令 add——加法運算

指令格式:add{extend}{.c} rD, operand2

add 指令可以完成暫存器內容或暫存器與立即數之間的加法運算。其中,.c 為可選,帶有.c 的指令在操作完畢後將影響條件旗標位元的狀態,否則將不影響其狀態;第二個運算元 operand2 由暫存器或立即數構成;extend 為附加的運算說明,可選值有:

• 空:表示不帶進位的加法,operand2 由兩個暫存器組成。指令格式為:add{.c} rD, rA, rB,完成 rD=rA+rB 的操作;

• “c”:表示帶進位的加法,operand2 由兩個暫存器組成。指令格式為:addc{.c} rD, rA, rB,完成 rD=rA+rB+c 的操作;

• “i”:表示與立即數進行加法運算,operand2 由一個立即數組成,指令格式為:addi{.c}

rD, SImm16,完成 rD=rD+SImm16 的操作;

• “is”:表示與移位立即數進行加法運算,operand2 由一個立即數組成,指令格式為:

addis{.c} rD, SImm16,完成 rD=rD+(SImm16<<16)的操作;

• “ri”:表示暫存器立即數加法運算,operand2 由一個暫存器和一個立即數組成,指令 格式為:addri{.c} rD, rA, SImm14,完成 rD=rA+SImm14 的操作。

指令舉例:

嵌入式微處理器 SPCE3200 原理及應用

© Sunplus Technology Co., Ltd. PAGE 52 V1.1 - Agu 29, 2007

add r4, r2, r1 // r4=r2+r1,不影響條件旗標位元 add.c r4, r2, r1 // r4=r2+r1,影響條件旗標位元 addc r4, r2, r1 // r4=r2+r1+c,不影響條件旗標位元 addis r4, 0x1234 // r4=r4+0x12340000,不影響條件旗標位元 addri r4, r2, 0x123 // r4=r2+0x123,不影響條件旗標位元

sub——加法運算

指令格式:sub{extend}{.c} rD, operand2

sub 指令可以完成暫存器內容或暫存器與立即數之間的減法運算。其中,extend 為附加的運 算說明,可選值有:

• 空:表示不帶借位的減法,operand2 由兩個暫存器組成,指令格式為:sub{.c} rD, rA, rB,完成 rD=rA-rB 的操作;

• “c”:表示帶借位的加法,operand2 由兩個暫存器組成,指令格式為:subc{.c} rD, rA, rB,完成 rD=rA-rB-c 的操作;

• “i”:表示與立即數進行減法運算,operand2 由一個立即數組成,指令格式為:subi{.c}

rD, SImm16,完成 rD=rD-SImm16 的操作;

• “is”:表示與移位立即數進行減法運算,operand2 由一個立即數組成,指令格式為:

subis{.c} rD, SImm16,完成 rD=rD-(SImm16<<16)的操作;

• “ri”:表示暫存器立即數加法運算,operand2 由一個暫存器和一個立即數組成,指令

格式為:subri{.c} rD, rA, SImm14,完成 rD=rA-SImm14 的操作。

在文檔中 嵌入式微處理器 (頁 50-53)