arm的定址方式好像沒有官方的定論,網間傳聞的9種定址方式分別是:
1、立即定址; 2、暫存器直接定址; 3、暫存器間接定址; 4、暫存器偏移定址; 5、暫存器基址變址定址; 6、批量(多)暫存器定址; 7、相對定址; 8、堆疊定址; 9、塊拷貝定址。
對於這種方式,我並不贊同。首先 所謂 「多暫存器定址」 和 「塊拷貝定址」,看不出有什麼區別呀!
我提出以下幾種歸類方式:
1、立即數定址;
2、暫存器直接定址;
這裡的直接定址有兩種情況:
一是,暫存器r 中的資料可以直接使用;
另一種情況是,暫存器r 中的資料要經過位移,再使用,也就是「九種定址方式」 中的 「暫存器偏移定址」;
3、暫存器間接定址;
這裡也分兩種:
一是,直接使用暫存器r 所指位址進行資料的訪問;
另一種情況是,暫存器r 所指位址經過加、減運算得到新的位址後,再訪問新位址的資料;也就是 「九種定址方式」 中的 「暫存器基址變址定址」。
4、多暫存器定址;
這也是分兩種情況:(這裡的多暫存器指的是 多個暫存器與記憶體之間的資料交換,記憶體到記憶體的大量資料傳輸一般是由記憶體控制器處理或者分成多個定址動作處理)
一是,針對堆疊的批量資料操作(使用記號:fa、fd、ea、ed);
二是,針對非堆疊的一般記憶體(使用記號:ia、ib、da、db);
但是在實際使用的時候,這種區別已經沒有了,統一都使用了一種記號(ia、ib、da、db)。
5、相對定址;
特別說明:
1、本文更適用於 arm9 的機器,其他機器能分出什麼類,我就不知道了。
2、網上的這種分類挺多,但是官方只給了彙編,並沒有給出定址方式的具體分類(或者說我沒有找到 #_# !!),兼聽則明吧。
ARM定址方式
arm定址方式定義 處理器根據指令中給出的資訊來找到所需運算元的方式 立即數定址 運算元本身就在指令中給出,只需要取出指令就得到了運算元的方式。運算元稱為立即數 add r0,r0,0x3f r0 r0 3f 第二個數就是運算元,需要用 來作為字首 暫存器定址 運算元存在暫存器中,利用暫存器中的數值...
ARM定址方式
定址方式就是指處理器根據指令中的資訊來找到指令所需的運算元的方式。arm標準彙編中使用分號注釋,gnu彙編使用 注釋 1.立即數定址 是一種特殊的定址方式,運算元就在指令中給出,只要取出指令也就取出了運算元,這個運算元也稱為立即數。add r0,r0,0x3f r0 r0 0x3f在上面這條指令中,...
ARM定址方式
所謂定址方式就是處理器根據指令中給出的位址資訊來尋找實體地址的方式。arm處理器的定址方式 目前arm處理器支援9種定址方式,分別是立即數定址 暫存器定址 暫存器偏移定址 暫存器間接定址 基址變址定址 多暫存器定址 相對定址 堆疊定址和塊拷貝定址。1.立即數定址 也叫立即定址,是一種特殊的定址方式,...