<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

自己歸納整理的ARM THUMB指令機器碼表

聚豐開發 ? 2018-10-26 13:35 ? 次閱讀

注:本文是作者以前發表在其個人博客,現在發布到“聚豐開發”專欄



有個項目需要分析ARM THUMB指令的機器碼,網上沒有搜索到整理好的機器碼表,只好自己把相關指令的機器碼歸納整理出來,這里分享給大家。THUMB指令并不多,只有六十多條,這個數字真的是非常了不起,51都一百三十多條呢。

可能這張表對于大多數朋友都用不到,畢竟要深入到機器碼這一層的機會還是比較少,我想能到這一步的朋友一定對ARM指令有了足夠的理解,所以就不對注釋做另外的說明,相信你一看就懂。




呵呵,如果你用上了這張表,記得在內心感謝我一下,這可是我從《Addison Wesley - ARM Architecture Reference Manual (2nd Edition)》中一條一條摘錄出來的。


v is immed_value
n is Rn
m is Rm
s is Rs
r is register_list
c is condition


按指令字母升序排列

0100 0001 01mm mddd -- ADC Rd,Rm
0001 110v vvnn nddd -- ADD Rd,Rn,#immed_3
0011 0ddd vvvv vvvv -- ADD Rd,#immed_8
0001 100m mmnn nddd -- ADD Rd,Rn,Rm
0100 0100 hhmm mddd -- ADD Rd,Rm h1h2,h1 is msb for Rd,h2 is msb for Rm
1010 0ddd vvvv vvvv -- ADD Rd,PC,#immed_8*4
1010 1ddd vvvv vvvv -- ADD Rd,SP,#immed_8*4
1011 0000 0vvv vvvv -- ADD SP,#immed_7*4
0100 0000 00mm mddd -- AND Rd,Rm
0001 0vvv vvmm mddd -- ASR Rd,Rm,#immed_5
0100 0001 00ss sddd -- ASR Rd,Rs
1101 cccc vvvv vvvv -- Bcc signed_immed_8
1110 0vvv vvvv vvvv -- B signed_immed_11
0100 0011 10mm mddd -- BIC Rd,Rm
1011 1110 vvvv vvvv -- BKPT immed_8
111h hvvv vvvv vvvv -- BL(X) immed_11
0100 0111 1hmm mSBZ -- BLX Rm
0100 0111 0Hmm mSBZ -- BX Rm
0100 0010 11mm mnnn -- CMN Rn,Rm
0010 1nnn vvvv vvvv -- CMP Rn,#immed_8
0100 0010 10mm mnnn -- CMP Rn,Rm
0100 0101 hhmm mnnn -- CMP Rn,Rm
0100 0000 01mm mddd -- EOR Rd,Rm
1100 1nnn rrrr rrrr -- LDMIA Rn!,reg_list
0110 1vvv vvnn nddd -- LDR Rd,[Rn+#immed_5*4]
0101 100m mmnn nddd -- LDR Rd,[Rn,Rm]
0100 1ddd vvvv vvvv -- LDR Rd,[PC+#immed_5*4]
1001 1ddd vvvv vvvv -- LDR Rd,[SP,#immed_8*4]
0111 1vvv vvnn nmmm -- LDRB Rd,[Rn,#immed_5*4]
0101 110m mmnn nddd -- LDRV Rd,[Rn,Rm]
1000 1vvv vvnn nddd -- LDRH Rd,[Rn,#immed_5*2]
0101 101m mmnn nddd -- LDRH Rd,[Rn,Rm]
0101 011m mmnn nddd -- LDRSB Rd,[Rn,Rm]
0101 111m mmnn nddd -- LDRSH Rd,[Rn,Rm]
0000 0vvv vvmm mnnn -- LSL Rd,Rm,#immed_5
0100 0000 10ss sddd -- LSL Rd,Rs
0000 1vvv vvmm mddd -- LSR Rd,Rm,#immed_5
0100 0000 11ss sddd -- LSR Rd,Rs
0010 0ddd vvvv vvvv -- MOV Rd,#immed_8
0001 1100 00nn nddd -- MOV Rd,Rn
0100 0110 hhmm mddd -- MOV Rd,Rm
0100 0011 01mm mddd -- MUL Rd,Rm
0100 0011 11mm mddd -- MVN Rd,Rm
0100 0010 01mm mddd -- NEG Rd,Rm
0100 0011 00mm mddd -- ORR Rd,Rm
1011 110R rrrr rrrr -- POP reg_list
1011 010R rrrr rrrr -- PUSH reg_list
0100 0001 11ss sddd -- ROR Rd,Rs
0100 0001 10mm mddd -- SBC Rd,Rm
1100 0nnn rrrr rrrr -- STMIA Rn!,reg_list
0110 0vvv vvnn nddd -- STR Rd,[Rn,#immed_5*4]
0101 000m mmnn nddd -- STR Rd,[Rn,Rm]
1001 0ddd vvvv vvvv -- STR Rd,[SP,#immed_8*4]
0111 0vvv vvnn nddd -- STRB Rd,[Rn,#immed_5]
0101 010m mmnn nddd -- STRB Rd,[Rn,Rm]
1000 0vvv vvnn nddd -- STRH Rd,[Rn,#immed_5*2]
0101 001m mmnn nddd -- STRH Rd,[Rn,Rm]
0001 111v vvnn nddd -- SUB Rd,Rn,#immed_3
0011 1ddd vvvv vvvv -- SUB Rd,#immed_8
0001 101m mmnn nddd -- SUB Rd,Rn,Rm
1011 0000 1vvv vvvv -- SUB Sp,#immed_7*4
1101 1111 vvvv vvvv -- SWI immed_8
0100 0010 00mm mnnn -- TST Rn,Rm



0000 0vvv vvmm mnnn -- LSL Rd,Rm,#immed_5

0000 1vvv vvmm mddd -- LSR Rd,Rm,#immed_5
0001 0vvv vvmm mddd -- ASR Rd,Rm,#immed_5
0001 100m mmnn nddd -- ADD Rd,Rn,Rm
0001 101m mmnn nddd -- SUB Rd,Rn,Rm
0001 110v vvnn nddd -- ADD Rd,Rn,#immed_3
0001 111v vvnn nddd -- SUB Rd,Rn,#immed_3
0001 1100 00nn nddd -- MOV Rd,Rn
0010 0ddd vvvv vvvv -- MOV Rd,#immed_8
0010 1nnn vvvv vvvv -- CMP Rn,#immed_8
0011 0ddd vvvv vvvv -- ADD Rd,#immed_8
0011 1ddd vvvv vvvv -- SUB Rd,#immed_8
0100 0000 00mm mddd -- AND Rd,Rm
0100 0000 01mm mddd -- EOR Rd,Rm
0100 0000 10ss sddd -- LSL Rd,Rs
0100 0000 11ss sddd -- LSR Rd,Rs
0100 0001 00ss sddd -- ASR Rd,Rs
0100 0001 01mm mddd -- ADC Rd,Rm
0100 0001 10mm mddd -- SBC Rd,Rm
0100 0001 11ss sddd -- ROR Rd,Rs
0100 0010 00mm mnnn -- TST Rn,Rm
0100 0010 01mm mddd -- NEG Rd,Rm
0100 0011 00mm mddd -- ORR Rd,Rm
0100 0010 10mm mnnn -- CMP Rn,Rm
0100 0010 11mm mnnn -- CMN Rn,Rm
0100 0011 01mm mddd -- MUL Rd,Rm
0100 0011 10mm mddd -- BIC Rd,Rm
0100 0011 11mm mddd -- MVN Rd,Rm
0100 0100 hhmm mddd -- ADD Rd,Rm h1h2,h1 is msb for Rd,h2 is msb for Rm
0100 0101 hhmm mnnn -- CMP Rn,Rm
0100 0110 hhmm mddd -- MOV Rd,Rm
0100 0111 0Hmm mSBZ -- BX Rm
0100 0111 1hmm mSBZ -- BLX Rm
0100 1ddd vvvv vvvv -- LDR Rd,[PC+#immed_5*4]
0101 000m mmnn nddd -- STR Rd,[Rn,Rm]
0101 001m mmnn nddd -- STRH Rd,[Rn,Rm]
0101 010m mmnn nddd -- STRB Rd,[Rn,Rm]
0101 011m mmnn nddd -- LDRSB Rd,[Rn,Rm]
0101 100m mmnn nddd -- LDR Rd,[Rn,Rm]
0101 101m mmnn nddd -- LDRH Rd,[Rn,Rm]
0101 110m mmnn nddd -- LDRV Rd,[Rn,Rm]
0101 111m mmnn nddd -- LDRSH Rd,[Rn,Rm]
0110 0vvv vvnn nddd -- STR Rd,[Rn,#immed_5*4]
0110 1vvv vvnn nddd -- LDR Rd,[Rn+#immed_5*4]
0111 1vvv vvnn nmmm -- LDRB Rd,[Rn,#immed_5*4]
0111 0vvv vvnn nddd -- STRB Rd,[Rn,#immed_5]
1000 0vvv vvnn nddd -- STRH Rd,[Rn,#immed_5*2]
1000 1vvv vvnn nddd -- LDRH Rd,[Rn,#immed_5*2]
1001 0ddd vvvv vvvv -- STR Rd,[SP,#immed_8*4]
1001 1ddd vvvv vvvv -- LDR Rd,[SP,#immed_8*4]
1010 0ddd vvvv vvvv -- ADD Rd,PC,#immed_8*4
1010 1ddd vvvv vvvv -- ADD Rd,SP,#immed_8*4
1011 0000 0vvv vvvv -- ADD SP,#immed_7*4
1011 0000 1vvv vvvv -- SUB Sp,#immed_7*4
1011 010R rrrr rrrr -- PUSH reg_list
1011 110R rrrr rrrr -- POP reg_list
1011 1110 vvvv vvvv -- BKPT immed_8
1100 0nnn rrrr rrrr -- STMIA Rn!,reg_list
1100 1nnn rrrr rrrr -- LDMIA Rn!,reg_list
1101 cccc vvvv vvvv -- Bcc signed_immed_8
1101 1111 vvvv vvvv -- SWI immed_8
1110 0vvv vvvv vvvv -- B signed_immed_11
111h hvvv vvvv vvvv -- BL(X) immed_11

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • ARM
    ARM
    +關注

    關注

    134

    文章

    8708

    瀏覽量

    362609
  • 指令集
    +關注

    關注

    0

    文章

    207

    瀏覽量

    23197
收藏 人收藏

    評論

    相關推薦

    【米爾-全志T113-i開發板試用】使用ruapu探測CPU指令集信息

    到的擴展指令集 看到 thumb 模式下,不支持 vfpv4 和 idiv vfpv4 增加了 fma 乘法加速,idiv 增加了整數除法,由此可見使用 arm 模式編譯能使用更多的指令
    發表于 02-25 21:36

    ARM中的編碼方式與尋址方式有何不同?

    和數據讀寫時起到了不同的作用。 編碼方式指的是將指令轉換為機器碼的過程。ARM指令集包含多種編碼方式,包括基本指令、分支
    的頭像 發表于 01-29 18:10 ?423次閱讀

    如何快速啟動嵌入式Linux應用

    當前啟動時間: 從上電到 LCD 顯示第一幀圖像:9.45 秒。 2 優化編譯器 ARM vs Thumb2 比較基于 ARM 或者 Thumb2
    發表于 11-19 16:41 ?390次閱讀
    如何快速啟動嵌入式Linux應用

    講講ARM指令集格式以及常用的ARM匯編指令

    對于搞嵌入式驅動或者操作系統的人來說,掌握匯編語言的使用還是比較重要的,畢竟有時候在分析定位問題的時候,多多少少都會有匯編的身影。本文主要講講ARM指令集格式以及常用的ARM匯編指令
    的頭像 發表于 11-08 12:34 ?1271次閱讀
    講講<b class='flag-5'>ARM</b><b class='flag-5'>指令</b>集格式以及常用的<b class='flag-5'>ARM</b>匯編<b class='flag-5'>指令</b>

    機器視覺與視覺檢測知識點的歸納

    電子發燒友網站提供《機器視覺與視覺檢測知識點的歸納.pdf》資料免費下載
    發表于 10-07 16:39 ?2次下載
    <b class='flag-5'>機器</b>視覺與視覺檢測知識點的<b class='flag-5'>歸納</b>

    ARM 1176JZ-S技術參考手冊

    處理器使用Java擴展和TrustZone?安全擴展實現ARM架構V6。 該體系結構包括32位ARM指令集、16位Thumb指令集和8位Ja
    發表于 08-29 06:08

    ARM-THUMB程序調用標準

    該基礎標準定義了ARMThumb通用的機器級、僅整數調用標準和ARM機器級浮點標準。 Thumb
    發表于 08-17 07:36

    如何在蜂鳥處理器核的基礎上擴展第三方指令?

    想咨詢一下如何在蜂鳥處理器核的基礎上擴展第三方指令,使用戶自定義指令,并如何構建機器碼等內容? 我看了胡老師的RISC-V處理器設計的書里面講的使用custom1-4來進行擴展,并以EAI為實例進行
    發表于 08-16 07:36

    RealView開發人員工具包匯編指南

    RVDK V2.2匯編器實現了匯編語言的實質性增強版本,同時繼續支持舊版本以支持舊代碼的匯編。 新版本可以組裝成手臂或拇指指令。 新版本是支持Thumb?-2所必需的,Thumb?-2是ARM
    發表于 08-16 06:59

    GCC怎么生成128bit自定義擴展指令的匯編碼和機器碼?

    我現在自定義了一套128bit的指令,對應的處理器也寫了,現在想測試一下結果和功能。想把自己定義的指令變成匯編碼和機器碼用來測試處理器。想請各位大神幫幫忙。
    發表于 08-12 07:26

    ARM11 MPCore技術參考手冊

    該處理器包含多達四個MP11 CPU,用于實現ARM體系結構v6K。它支持ARMThumb指令集,支持直接執行Java字節碼的Jazelle技術,以及一系列對32位寄存器中的16位或
    發表于 08-02 18:45

    ARM922T處理器技術參考手冊

    以作為可以嵌入到更復雜的設備中的獨立核心來提供。獨立核心有一個簡單的總線接口,允許您設計自己的緩存和周圍的內存系統。ARM9TDMI系列微處理器同時支持32位ARM和16位Thumb
    發表于 08-02 15:44

    ARM920T處理器技術參考手冊

    簡單的總線接口,允許您圍繞它設計自己的緩存和內存系統。ARM9TDMI系列微處理器支持32位ARM和16位Thumb指令集,允許您在高性能和
    發表于 08-02 13:05

    ARM968E-S處理器技術參考手冊

    可合成的ARM968E-S處理器是ARM9Thumb系列的一員,實現了ARMv5TE體系結構。它支持32位ARM指令集和16位Thumb
    發表于 08-02 12:08

    Thumb?-2參考手冊

    本手冊的目的是描述Thumb?-2,它的指令集架構(ISA),以及變化 它引入了程序員的模型。本手冊還描述了ARM?ISA的擴展 同時介紹。Thumb-2是
    發表于 08-02 07:34
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>