-
尋址模式
鎖定
TMS320C62x/C64x/C67xDSP的尋址模式有線性尋址模式(使用BK0),還有循環尋址模式(使用BK1)。尋址模式由尋址模式寄存器(AMR)決定。
所有的寄存器都可以進行線性尋址,只有8個寄存器可以進行循環尋址,這8個寄存器是:.D1功能單元使用的寄存器A4~A7和.D2功能單元使用的寄存器B4~B7。指令LDB(U)/LDH(U)/LDW,STB/STH/STW,ADDAB/ADDAH/ADDAW/ADDAD和SUBAB/SUBAH/SUBAW都使用AMR寄存器來決定這些寄存器的尋址模式。
- 中文名
- 尋址模式
- 外文名
- Addressing mode
- 定 義
- 由尋址模式寄存器決定
- 分 類
- 線性尋址模式、循環尋址模式
- 應用學科
- 操作系統術語
- 縮 寫
- AM
尋址模式概念
TMS320C62x/C64x/C67xDSP的尋址模式有線性尋址模式(使用BK0),還有循環尋址模式(使用BK1)。尋址模式由尋址模式寄存器(AMR)決定。
所有的寄存器都可以進行線性尋址,只有8個寄存器可以進行循環尋址,這8個寄存器是:.D1功能單元使用的寄存器A4~A7和.D2功能單元使用的寄存器B4~B7。指令LDB(U)/LDH(U)/LDW,STB/STH/STW,ADDAB/ADDAH/ADDAW/ADDAD和SUBAB/SUBAH/SUBAW都使用AMR寄存器來決定這些寄存器的尋址模式。
尋址模式工作原理
尋址模式線性尋址模式
對於load和store指令,線性尋址方式是將偏移量(offsetR/cst)進行移位操作。對於字(word)、半字(halfword)或者字節(byte),分別左移2位、1位或者0位。然後,再將移位的結果與基礎寄存器(baseR)的值相加或者相減。
對於整數加減法指令,線性尋址是將源操作數(src1/cst)進行移位操作。對於字(word)、半字(halfword)或者字節(byte),分別左移2位、1位或者0位。然後,再將移位的結果進行加減法運算。
尋址模式循環尋址模式
AMR寄存器中的BK0和BK1字段説明了循環尋址方式塊的大小。
對於LDW、LDH(U)或LDB(U)指令,在分別完成將偏移量(offsetR/cst)左移2位、1位或者0位以後,再在第N位和第N+1位之間做一次帶進位和借位的加減法運算。基礎寄存器(baseR)中的N+1位到第31位保留。如果偏移量大於循環緩衝大小,那麼偏移量的有效值是循環緩衝大小的模。
如圖1所示,如果説一個塊的大小是4,意思就是塊的大小是4B,而不是4個數據類型(字節、半字或者字)的大小。所以,要完成一個對8個字大小的陣列的循環尋址,那麼塊的大小應該為32,或者N=4。
對於ADDAW、ADDAH或者ADDAB指令,在分別完成將源操作數(src1/cst)左移2位、1位或者0位以後,再在第N位和第N+1位之間做一次帶進位和借位的加減法運算。源操作數src2的第N+1位到第31位的值不變。如果src1大於循環緩衝的大小,那麼偏移量的有效值是循環緩衝大小的模。
尋址模式存取指令地址生成語法
TMS320C62x/C64x/C67x CPU從存儲器取數據和向存儲器存數據只能使用load和store指令。圖2顯示了向存儲器間接尋址的語法規定。有時候,存儲指令需要在基礎地址上有一個比較大的偏移量,在這種情況下,可以使用B15或者B14寄存器作為基礎寄存器,使用一個15位的常數(ucst15)作為偏移量。
[1]
尋址模式微處理器的尋址模式
微處理器在執行指令時,必然要對數據進行操作,這些數據叫做操作數。操作數可以是指令的一部分,可以存放在處理器的內部寄存器中,也可以存放在存儲器或保持在I/O端口中。為了訪問這些不同類型的操作數,微處理器提供了各種尋址模式。尋址模式一般可分為三類:寄存器操作數尋址、立即操作數尋址和存儲器操作數尋址。
尋址模式寄存器操作數尋址
寄存器尋址模式是指指令的操作數存放在處理器的內部寄存器中,這些內部寄存器包括段寄存器和通用寄存器,寄存器可以分8位、16位或32位,寄存器操作數可以用作為源操作數,也可以用作為目的操作數。
MOV指令執行過程如下:MPU首先取指令,指令地址由CS:IP的內容確定,對應的物理地址為01000H,當指令取進MPU內部的指令隊列後,存放在那裏並等待執行,此時的CS:IP將指向下一條指令地址。
尋址模式立即操作數尋址
假如指令運行的操作數就是指令的一部分,那麼這種形式的操作數叫做立即數,其對應的尋址方式為立即數尋址。立即數可以是8位、16位或32位,在指令中編碼格式,立即數放在操作碼之後。