0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

學(xué)習(xí) Cortex-M0+指令集

華仔的編程隨筆 ? 來源:華仔的編程隨筆 ? 作者:華仔的編程隨筆 ? 2023-05-27 20:42 ? 次閱讀

最近基于cortex-M0/M0+的mcu增多了,學(xué)習(xí)了大佬凌煙慕魚的作品,這里記下來,以便以后學(xué)習(xí)。

Cortex M0+保留了Cortex-M0的全部56個(gè)指令。
根據(jù)功能可以將Cortex-M0+處理器的指令化為以下幾組

在處理器內(nèi)移動數(shù)據(jù)
MOV,MRS(move special register to register),MSR

存儲器訪問
LDR(LDR,LDRH,LDRB),STR(STR,STRH,STRB),LDM,LDMIA(基地址寄存器會更新),STMIA

??臻g訪問
PUSH,POP(都可以用來操作多個(gè)寄存器,SP的值=棧頂?shù)臄?shù)據(jù)的地址值+4)

算數(shù)運(yùn)算
ADD,ADDC(帶進(jìn)位的加法),SUB,SBC(帶借位的減法),MUL,CMP,CMN(負(fù)數(shù)比較)

邏輯運(yùn)算
AND,ORR(邏輯或),EOR(邏輯亦或),BIC(邏輯位清除),MVN(邏輯位取反),TST(位與)

移位和循環(huán)操作
ASR(最高位不變,最后一位移出位到APSR中的進(jìn)位標(biāo)志),LSL,LSR,ROR(循環(huán)右移)

展開和順序反轉(zhuǎn)操作
REV(字節(jié)反轉(zhuǎn)),REV16(半字內(nèi)的反轉(zhuǎn)),REVSH(低半字內(nèi)的字節(jié)順序反轉(zhuǎn),并進(jìn)行有符號展開)這些反轉(zhuǎn)指令通常用于大小端系統(tǒng)之間數(shù)據(jù)轉(zhuǎn)換。
SXTB(對字?jǐn)?shù)據(jù)中的最低字節(jié)進(jìn)行有符號展開),SXTH,UXTB(對字?jǐn)?shù)據(jù)中的最低字節(jié)進(jìn)行無符號展開),UXTH
符號根據(jù)第7位或者第15位來決定

程序流控制
B(無條件跳轉(zhuǎn)),B< cond ><標(biāo)號> (條件跳轉(zhuǎn),有14個(gè)可選cond后綴),BL(跳轉(zhuǎn)并將返回地址存儲到LR),BX(跳轉(zhuǎn)并根據(jù)寄存器的值第0位修改處理器狀態(tài))
一般使BL調(diào)用子函數(shù),BX LR返回

存儲器屏障指令
DMB,DSB,ISB
這些指令用于復(fù)雜的存儲器系統(tǒng)。Cortex-M0只有一個(gè)存儲器接口連接到存儲器系統(tǒng),并且系統(tǒng)總線接口上沒有緩存,所以這些指令一般用不到。但是還是支持3個(gè)存儲器屏障指令

異常相關(guān)指令
SVC 請求管理調(diào)用,一般用于系統(tǒng)服務(wù)的入口或者API
CPS 使能或者禁止中斷
其他功能
NOP,BKPT(斷點(diǎn))
偽指令

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏

    評論

    相關(guān)推薦

    ARM Cortex-M0Cortex-M0+到底有什么區(qū)別呢

    ARM Cortex-M0Cortex-M0+到底有什么區(qū)別呢
    發(fā)表于 01-04 23:15

    ARM Cortex-M0+中斷機(jī)制和中斷編程步驟

    慕課蘇州大學(xué).嵌入式開發(fā)及應(yīng)用.第二章.入門與軟件框架.ARM Cortex-M0+中斷機(jī)制和中斷編程步驟0 目錄2 入門與軟件框架2.7 ARM Cortex-M0+中斷機(jī)制和中斷編程步驟
    發(fā)表于 11-08 09:10

    ARM Cortex-M0+內(nèi)核定時(shí)器

    慕課蘇州大學(xué).嵌入式開發(fā)及應(yīng)用.第三章.基本模塊.ARM Cortex-M0+內(nèi)核定時(shí)器 (Systic0 目錄3 基本模塊3.1 ARM Cortex-M0+內(nèi)核定時(shí)器 (Systic3.1.1
    發(fā)表于 11-08 06:36

    Cortex-M0+具有哪些指令

    Cortex-M0+具有哪些指令?
    發(fā)表于 01-26 06:23

    ARM Cortex-M0+處理器數(shù)據(jù)表

    Cortex-M0+處理器建立在非常成功的Cortex-M0處理器的基礎(chǔ)上,保持了完全的指令集和工具兼容性,同時(shí)進(jìn)一步降低了能耗并提高了性能。 Cortex-M0+極小的硅面積、低功耗
    發(fā)表于 08-25 06:03

    ARM指令集詳解

    ARM指令集詳解 內(nèi)容提要 ARM指令集 ARM指令集分類與指令格式 ARM指令的尋址方式 ARM
    發(fā)表于 03-09 09:39 ?263次下載
    ARM<b class='flag-5'>指令集</b>詳解

    芯唐M0指令集

    芯唐M0指令集,有需要的朋友可以下來看看。
    發(fā)表于 01-13 09:48 ?17次下載

    Cortex-M0指令集

    Cortex-M0指令集,有需要的下來看看。
    發(fā)表于 01-13 17:17 ?29次下載

    ABB_AC800M_PLC指令集.doc

    ABB AC800M_PLC指令集和,學(xué)習(xí)ABB AC800M_PLC最好的資料之一。
    發(fā)表于 09-12 16:13 ?0次下載

    Cortex_m0用戶指南3、4_指令集、外設(shè)

    Cortex_m0用戶指南3、4_指令集、外設(shè)
    發(fā)表于 10-09 11:10 ?6次下載
    <b class='flag-5'>Cortex_m0</b>用戶指南3、4_<b class='flag-5'>指令集</b>、外設(shè)

    Cortex-M0的完整指令集

    Cortex-M0的完整指令集
    發(fā)表于 10-13 15:00 ?64次下載
    <b class='flag-5'>Cortex-M0</b>的完整<b class='flag-5'>指令集</b>

    thumb指令集是什么_thumb指令集與arm指令集的區(qū)別

    thumb指令集是arm指令集的一個(gè)子集,是針對代碼密度問題而提出的,它具有16位的代碼寬度。與等價(jià)的32位代碼相比較,thumb指令集在保留32位代碼優(yōu)勢的同時(shí),大大的節(jié)省了系統(tǒng)的存儲空間
    發(fā)表于 11-03 17:34 ?1.8w次閱讀
    thumb<b class='flag-5'>指令集</b>是什么_thumb<b class='flag-5'>指令集</b>與arm<b class='flag-5'>指令集</b>的區(qū)別

    Cortex-M系列處理器指令集_指令集特性比較總結(jié)

    本文主要介紹Cortex-M系列處理器指令集指令集特性比較總結(jié),具體的跟隨小編一起來了解一下。
    發(fā)表于 04-18 16:59 ?7857次閱讀
    <b class='flag-5'>Cortex-M</b>系列處理器<b class='flag-5'>指令集</b>_<b class='flag-5'>指令集</b>特性比較總結(jié)

    Cortex-M0+指令集

    Cortex-M0+指令集Cortex M0+保留了Cortex-M0的全部56個(gè)指令。根據(jù)功能
    發(fā)表于 12-01 13:06 ?17次下載
    <b class='flag-5'>Cortex-M0+</b><b class='flag-5'>指令集</b>

    一文詳解Arm Cortex-M處理器指令集

    Arm處理器是基于精簡指令集計(jì)算機(jī)(RISC)原理設(shè)計(jì)的,指令集和相關(guān)譯碼機(jī)制較為簡單,具有32位Arm指令集和16位Thumb指令集,Arm指令集
    的頭像 發(fā)表于 05-17 09:31 ?6195次閱讀