Debug 中斷用於強制處理器在任何時候進入 Debug 模式 DMA 存取
由 SJTAG 直接控制 DMA 通道是透過 BIU 來存取系統匯流排的。當用戶需要直接下載代
碼到系統記憶體中時,這一特性很有用。
嵌入式微處理器 SPCE3200 原理及應用
© Sunplus Technology Co., Ltd. PAGE 37 V1.1 - Agu 29, 2007
2 S+core7 指令系統
2.1 概述
指令是 CPU 執行某種操作的命令。微處理器(MPU)或微控制器(MCU)所能識別全部指 令的集合成為指令系統,是研製廠家在設計 CPU 時所賦予的功能。只有正確書寫和使用指 令,才能完成設計任務。因此,學習和掌握指令的功能與應用是程式設計的基礎。本章將詳 細介紹 S+core7 的指令系統。
S+core7 指令系統分為 32 位指令集和 16 位指令集。
32 位指令集的效率高、功能強,可以完成所有處理器支援的操作。大多數 32 位指令都具有 三個運算元,且支援使用 16 位的立即數。另外,32 位指令可以存取全部 32 個通用暫存器。
32 位指令集包含一些系統控制指令以及協同處理器控制指令,這些指令是 16 位指令集不具 備的。這些指令可以控制處理器完成一些複雜處理,大大增強系統的功能。
16 位指令集可以看作是 32 位指令集的壓縮形式的子集,它是專為編譯器(compiler)編譯 混合模式的指令而設計,以減少代碼容量的,一般不推薦用來進行手動組合語言編碼。由於 16 位指令集的指令寬度的限制,基本上所有的 16 位指令都是兩個運算元的操作,且允許使 用小立即數,另外,由於指令長度的限制,指令只能存取 32 個通用暫存器中的前 16 個(r0
~r15) 。當發生 16 位指令不為字對齊的情況,則最好將該 16 位指令改為相應的 32 位指令,
而最好不要插入一個 16 位的 nop!指令來對齊字邊界,因為這樣將增加指令執行個數。
2.2 指令格式與編碼
S+core7 處理器是基於精簡指令集電腦(RISC)原理設計的,指令集和相關譯碼機制較為簡 單。S+core7 處理器具有 32 位的指令匯流排,每次將 32 位長度的指令代碼填入譯碼機構。
S+core7 處理器支援 32 位和 16 位兩種指令模式。處理器可以自動識別一個 32 位的編碼是 一條 32 位的指令還是兩條 16 位的指令,而不需要任何指令模式的切換。一個 32 位的指令 編碼中的 bit31 和 bit15 兩位稱為“P-位",用來區分指令模式。所以,32 位指令的實際有 效寬度為 30 位,而 16 位指令的實際有效寬度為 15 位。如圖 2-1所示:
31
p0 p1
30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
圖 2-1 S+core7 處理器的指令模式
對應於 P-位元的不同編碼,指令格式的意義如表 2-1所示。
嵌入式微處理器 SPCE3200 原理及應用
© Sunplus Technology Co., Ltd. PAGE 38 V1.1 - Agu 29, 2007
表 2-1 P-位指示的指令格式
P0 P1 意義 格式符號
1 1 32 位指令 32BF
0 0 16 位指令+16 位指令 16BF
0 1 並行條件執行(PCE-Parallel Condition Execute)指令:
•
並行執行條件旗標T 為 1 時執行高半字的 16 位指令 1•
並行執行條件旗標T 為 0 時執行低半字的 16 位指令 2PCEF
1 0 未定義 UDEF
除去 P-位之後的指令被劃分為若干欄位,每一欄位均代表一定的含義。其中,32 位指令的主 操作碼由第 25~29 位確定,16 位指令的主操作碼則由第 12~14 位確定。指令中其餘欄位 的意義隨指令的不同而有所不同。各類指令包含的欄位如圖 2-2所示。
29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OP
OP OP
Disp24(lmm) LK
rD rA
Disp[18:9](lmm) BC Disp[8:0](lmm) LK
rB 0 0 0 func6 CU
OP rD(D,S1) func3 Imm16(S2) CU
CU Imm14(S2)
rA(S1) rD(D)
OP
rD(D)
OP rA(S1) Imm12(S2) func3
OP OP
USD1 rD
rA(optional) CR
rB(optional) USD2 func5
0 0 0 0 0 0 0 CR_OP func2 II 0 MI
29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OP rD
OP rD
OP CrD
CrA CrA CrA
0 0 0 0 0 0 0 0 0 0
Imm10
CP#
CP#
Sub-OP Sub-OP CP# Sub-OP
CrB COP-Code
14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OP EC Disp8(Imm)
OP OP OP OP
Disp11(Imm) LK
rDgo rAgo func4
func3
rDgo Imm5
Imm8 rDgo
J-form BC-form Special-form I-form RI-form RIX-form CENew CR-form
coprocessor mtc/mfc ldc/stc cop
15 bit 30 bit
B<cond>x J-form R-form I-form-1 I-form-2
0 Don’t care
圖 2-2 S+core7 處理器指令欄位
S+core7 指令集按照 OP 欄位對指令進行分類,32 位指令集可以分為十一類,分別是:J-form、
BC-form、Special-form、I-form、RI-form、RIX-form、CENew、CR-form、mtc/mfc 類、ldc/stc 類以及 cop 類等;16 位指令集可以分為五類,分別是:B<cond>x、J-form、R-form、I-form-1、
I-form-2 等。表 2-2所示的是各分類的具體解釋。如,J-form 表示無條件跳越類的指令。
嵌入式微處理器 SPCE3200 原理及應用
© Sunplus Technology Co., Ltd. PAGE 39 V1.1 - Agu 29, 2007
表 2-2 指令分類對照表
符號 含義
J-form 無條件跳越類指令
BC-form 條件跳越類指令(32 位指令)
Special-form 暫存器做為源運算元的指令(32 位指令)
I-form 立即數做為源運算元的指令
RI-form 暫存器與立即數做為源運算元的指令 RIX-form 變址定址類指令
CENew 用戶擴展類指令
CR-form 特殊功能暫存器操作類指令 B<cond>x 條件跳越類指令(16 位指令)
R-form 暫存器做為源運算元的指令(16 位指令)