ARM處理器有9種基本定址方式:定址方式是根據指令中給出的地址碼欄位來實現尋找真實運算元地址的方式。
暫存器定址:
運算元的值在暫存器中,指令中的地址碼欄位給出的是暫存器編號,暫存器的內容是運算元,指令執行時直接取出暫存器值操作。
立即定址:
在立即定址指令中資料就包含在指令當中,立即定址指令的操作碼欄位後面的地址碼部分就是運算元本身,取出指令也就取出了可以立即使用的運算元(也稱為立即數)。立即數要以“#”為字首,表示16進位制數值時以“0x”表示。
暫存器移位定址:
暫存器移位定址是ARM指令集特有的定址方式。第2個暫存器運算元在與第1個運算元結合之前,先進行移位操作。
暫存器間接定址:
指令中的地址碼給出的是一個通用暫存器編號,所需要的運算元儲存在暫存器指定地址的儲存單元中,即暫存器為運算元的地址指標,運算元存放在儲存器中。
變址定址:
變址定址是將基址暫存器的內容與指令中給出的偏移量相加,形成運算元的有效地址,變址定址用於訪問基址附近的儲存單元,常用於查表,陣列操作,功能部件暫存器訪問等。
多暫存器定址
採用多暫存器定址方式,一條指令可以完成多個暫存器值的傳送,這種定址方式用一條指令最多可以完成16個暫存器值的傳送。
堆疊定址:
堆疊是一種資料結構,堆疊是特定順序進行存取的儲存區,操作順序分為“後進先出”和“先進後出”,堆疊定址時隱含的,它使用一個專門的暫存器(堆疊指標)指向一塊儲存區域(堆疊),指標所指向的儲存單元就是堆疊的棧頂。儲存器生長堆疊可分為兩種:
向上生長:向高地址方向生長,稱為遞增堆疊(Ascending Stack)。
向下生長:向低地址方向生長,稱為遞減堆疊(Decending Stack)。
堆疊指標指向最後壓入的堆疊的有效資料項,稱為滿堆疊(Full Stack);堆疊指標指向下一個要放入的空位置,稱為空堆疊(Empty Stack)。
這樣就有四種類型的堆疊工作方式,ARM微處理器支援這四種類型的堆疊工作方式,即:
滿遞增堆疊:堆疊指標指向最後壓入的資料,且由低地址向高地址生成。如指令LDMFA,STMFA 等。
滿遞減堆疊:堆疊指標指向最後壓入的資料,且由高地址向低地址生成。如指令LDMFD,STMFD 等。
空遞增堆疊:堆疊指標指向下一個將要放入資料的空位置,且由低地址向高地址生成。如指令LDMEA,STMEA 等。
空遞減堆疊:堆疊指標指向下一個將要放入資料的空位置,且由高地址向低地址生成。如指令LDMED,STMED 等。
塊複製定址:
塊複製定址用於把一塊從儲存器的某一位置複製到另一位置,是一個多暫存器傳送指令。
相對定址:
相對定址是變址定址的一種變通,由程式計數器PC提供基準地址,指令中的地址碼欄位作為偏移量,兩者相加後得到的地址即為運算元的有效地址。
ARM處理器有9種基本定址方式:定址方式是根據指令中給出的地址碼欄位來實現尋找真實運算元地址的方式。
暫存器定址:
運算元的值在暫存器中,指令中的地址碼欄位給出的是暫存器編號,暫存器的內容是運算元,指令執行時直接取出暫存器值操作。
立即定址:
在立即定址指令中資料就包含在指令當中,立即定址指令的操作碼欄位後面的地址碼部分就是運算元本身,取出指令也就取出了可以立即使用的運算元(也稱為立即數)。立即數要以“#”為字首,表示16進位制數值時以“0x”表示。
暫存器移位定址:
暫存器移位定址是ARM指令集特有的定址方式。第2個暫存器運算元在與第1個運算元結合之前,先進行移位操作。
暫存器間接定址:
指令中的地址碼給出的是一個通用暫存器編號,所需要的運算元儲存在暫存器指定地址的儲存單元中,即暫存器為運算元的地址指標,運算元存放在儲存器中。
變址定址:
變址定址是將基址暫存器的內容與指令中給出的偏移量相加,形成運算元的有效地址,變址定址用於訪問基址附近的儲存單元,常用於查表,陣列操作,功能部件暫存器訪問等。
多暫存器定址
採用多暫存器定址方式,一條指令可以完成多個暫存器值的傳送,這種定址方式用一條指令最多可以完成16個暫存器值的傳送。
堆疊定址:
堆疊是一種資料結構,堆疊是特定順序進行存取的儲存區,操作順序分為“後進先出”和“先進後出”,堆疊定址時隱含的,它使用一個專門的暫存器(堆疊指標)指向一塊儲存區域(堆疊),指標所指向的儲存單元就是堆疊的棧頂。儲存器生長堆疊可分為兩種:
向上生長:向高地址方向生長,稱為遞增堆疊(Ascending Stack)。
向下生長:向低地址方向生長,稱為遞減堆疊(Decending Stack)。
堆疊指標指向最後壓入的堆疊的有效資料項,稱為滿堆疊(Full Stack);堆疊指標指向下一個要放入的空位置,稱為空堆疊(Empty Stack)。
這樣就有四種類型的堆疊工作方式,ARM微處理器支援這四種類型的堆疊工作方式,即:
滿遞增堆疊:堆疊指標指向最後壓入的資料,且由低地址向高地址生成。如指令LDMFA,STMFA 等。
滿遞減堆疊:堆疊指標指向最後壓入的資料,且由高地址向低地址生成。如指令LDMFD,STMFD 等。
空遞增堆疊:堆疊指標指向下一個將要放入資料的空位置,且由低地址向高地址生成。如指令LDMEA,STMEA 等。
空遞減堆疊:堆疊指標指向下一個將要放入資料的空位置,且由高地址向低地址生成。如指令LDMED,STMED 等。
塊複製定址:
塊複製定址用於把一塊從儲存器的某一位置複製到另一位置,是一個多暫存器傳送指令。
相對定址:
相對定址是變址定址的一種變通,由程式計數器PC提供基準地址,指令中的地址碼欄位作為偏移量,兩者相加後得到的地址即為運算元的有效地址。