ARM組合語言基礎

來源:互聯網
上載者:User

標籤:處理器   目的   資料載入   大小   lis   子程式   訪問   label   交換   

ARM 與 Thumb 寄存器對應關係
  • PC寄存器: ARM狀態為R15,Thumb狀態為PC
  • LR寄存器: ARM狀態為R14,Thumb狀態為LR
  • SP寄存器: ARM狀態為R13,Thumb狀態為SP
  • IP寄存器: ARM狀態為R12,Thumb狀態為IP
  • FP寄存器: ARM狀態為R11,Thumb狀態為FP

其他對應關係一一相同

ARM 與 Thumb 指令集

指令格式:

其中

  • opcode為助記符
  • cond為條件
  • S指定其是否影響CPSR寄存器的值(也就是程式狀態字)
  • .W與.N指定指令寬頻。(一個指定32,一個指定16)
  • Rd 目的寄存器
  • Rn 第一個運算元寄存器
  • operand2為第二個運算元
跳轉指令B 跳轉指令

格式:B{cond} label

BL帶連結的跳轉指令

格式:BL{cond} label

當條件滿足時,會將當前指令的下一條指令儲存到R14(LR)寄存器中,然後跳轉到label中。這通常用於調用子程式,在子程式的尾部,通過 MOV PC,LR 返回

BX 帶狀態切換的跳轉指令

格式:BX{cond} Rm

當執行BX指令時,如果條件cond滿足,則處理器會檢查Rm的為[0]是否為1,如果為1,這將CSPR寄存器的T置1,並將目標代碼解釋為Thumb代碼來執行。為0的話,複位 CSPR寄存器的T。並將目標代碼解釋為ARM代碼來執行。

eg:

.code 32ADR R0,thumbcode+1 BX R0 @跳轉到thmbcode,並將處理器切換為thumb模式 thumbcode:.code 16...
BLX帶連結與狀態切換的跳轉指令

格式:BLX{cond} Rm

儲存空間訪問指令LDR

格式:

LDR{type}{cond} Rd,labelLDRD{cond} Rd,Rd2,label

type指定了操作的資料大小

用於從儲存空間中載入資料到寄存器。

LDRD 一次載入雙字的資料,將資料載入到Rd,Rd2中

STR

格式:

STR{type}{cond} Rd,labelSTRD{cond} Rd,Rd2,label

用於儲存資料到指定的儲存單元

LDM

格式:

LDM{addr_mode}{cond} Rn{!},reglist

其中 ! 為可選,如果有,則將最終地址回寫到Rn中

該指令從指定的儲存單元,載入資料到寄存器列表中

eg:

LDMIA R0!,{R1-R3} @依次載入R0地址處的資料到R1,R2,R3寄存器中
STM

格式:

STM{addr_mode}{cond} Rn{!},reglist

其中 ! 為可選,如果有,則將最終地址回寫到Rn中

將寄存器列表中的資料存放區到指定儲存單元

PUSHPOPSWP

格式:

SWP{B}{cond} Rd,Rm,[Rn]

Rd:為要從儲存空間載入資料的寄存器

Rm:為寫入資料到儲存空間的寄存器

Rn:為儲存空間地址

如果 Rd 與 Rm 相同,則可實現寄存器與儲存空間的交換

資料處理指令

ARM組合語言基礎

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.