• 沒有找到結果。

Debug 中斷

在文檔中 嵌入式微處理器 (頁 37-40)

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 位指令 2

PCEF

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 位指令)

為了描述方便,對在指令系統敍述過程中所要用到的符號作統一約定,如表 2-3所示。

在 S+core7 的指令系統中,根據指令的功能不同,指令具有的語法形式也是不同的。一條典 型的 32 位指令語法格式如下所示:

<opcode>{.c} {operand1}, {operand2}

在上面的格式中,“<>"符號內的項是必須的,“{}"符號內的項是可選的。例如,<opcode>

是指令助記符,這裏必須書寫;而{.c}是可選開關,指該指令執行結束後是否需要對條件旗標

位元產生影響(針對某些指令,可以選擇該項) ;operand1 一般是一個通用暫存器,用於保

存運算結果;operand2 可以是一個或者兩個通用暫存器,或者是暫存器與立即數的組合,或

者是一個立即數,用於參與運算,或者指定定址位址。

在文檔中 嵌入式微處理器 (頁 37-40)