在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            arm指令集 從匯編開始

            作者: 時(shí)間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
            特點(diǎn):
            Load / Store結(jié)構(gòu)(存儲(chǔ)器操作僅包括load和store,所有其他操作在寄存器中完成)
            32位固定指令寬度
            3地址指令格式(即兩個(gè)源操作數(shù)和結(jié)果寄存器都獨(dú)立指定)
            每條指令都條件執(zhí)行
            可在單周期執(zhí)行的單條指令內(nèi)同時(shí)完成一項(xiàng)普通以為操作和一項(xiàng)普通ALU操作

            自動(dòng)變址功能

            寄存器模型
            用戶模式下
            R1-R15的15個(gè)32位通用寄存器堆,R15為PC寄存器
            CPSR的狀態(tài)寄存器高四位表示N(負(fù)數(shù))、Z(零)、 C(進(jìn)位)、V(溢出)標(biāo)志

            分類介紹:
            +-------------+-------------+-----------+
            | 數(shù)據(jù)處理指令| 數(shù)據(jù)傳送指令| 控制流指令|
            +-------------+-------------+-----------+

            ------------------------------------------------------------------------------
            數(shù)據(jù)處理指令:對(duì)寄存器內(nèi)數(shù)據(jù)進(jìn)行算術(shù)或邏輯操作
            簡單寄存器操作
            算術(shù)操作: ADD, ADC, SUB, SBC, RSB, RSC
            說明: RSB和RSC分別為反向減法和帶進(jìn)位反向減法
            舉例: ADD r0, r1, r2 ; r0 = r1 + r2
            RSB r0, r1, r2 ; r0 = r2 - r1
            按位邏輯操作: AND,ORR,EOR,BIC
            說明:按位與,按位或,按位異或,and not
            舉例: BIC r0, r1, r2 ; r0 = r1 and not r2
            寄存器傳送操作:MOV,MVN
            說明: MVN為按位取反傳送
            舉例: MVN r0, r2 ; r0 = not r2
            比較操作:CMP,CMN,TST,TEQ
            說明: 比較,取反比較,位測(cè)試,測(cè)試相等
            舉例: TEQ r1, r2 ;
            注意:操作數(shù)順序格式為結(jié)果寄存器,第一操作數(shù),第二操作數(shù)
            立即數(shù)操作:
            說明: 在數(shù)字前面加#表示立即數(shù),加#&表示16進(jìn)制立即數(shù)
            舉例: ADD r3, r3, #1 ; r3 = r3 + 1
            AND r8, r7, #&ff ; r8 = r7 & 0xFF
            寄存器移位操作:四地址指令
            移位指令:LSL, LSR,ASL,ASR,ROR,RRX
            說明: 邏輯左移,邏輯右移,算術(shù)左移,算術(shù)右移,循環(huán)右移,擴(kuò)展
            一位的循環(huán)右移
            舉例: ADD r3, r2, r1, LSL #3 ; r3 = r2 + (r1 << 3)
            設(shè)置條件碼:
            說明:任何數(shù)據(jù)處理指令都可以設(shè)置條件碼(NZCV),比較操作只能設(shè)
            置條件碼,如果其他數(shù)據(jù)處理操作要設(shè)置條件碼,需要增加S
            操作碼來指明。
            算術(shù)操作(包括CMP,CMN)根據(jù)算術(shù)運(yùn)算結(jié)果來設(shè)置所有標(biāo)志
            位,邏輯和傳送操作不產(chǎn)生有意義的C或V值,這些操作根據(jù)結(jié)
            果來設(shè)置N和Z,保留V,沒有移位操作時(shí),保留C;或者當(dāng)移位
            時(shí),將移位移出的最后位設(shè)置為C。
            舉例: ADDS r2, r2, r0
            ADC r3, r3, r1
            乘法操作:
            說明: 第二操作數(shù)不可以為立即數(shù)
            結(jié)果寄存器不允許為源寄存器
            如果設(shè)置位S,則標(biāo)志位V保留,標(biāo)志為C不再有意義。
            長乘的話,高32位有效位放入第二個(gè)結(jié)果寄存器。
            舉例: MUL r4, r3, r3 ; r4 = r3 * r2
            MLA r4, r3, r2, r1 ; r4 = r3 * r2 + r1

            ------------------------------------------------------------------------------
            數(shù)據(jù)傳送指令:在ARM寄存器和存儲(chǔ)器之間傳送數(shù)據(jù)
            基本數(shù)據(jù)傳送指令
            單寄存器的Load / Store指令
            多寄存器的Load / Store指令
            單寄存器的交換指令:主要用于系統(tǒng)級(jí)程序,實(shí)現(xiàn)原子操作。
            尋址模式:ARM的數(shù)據(jù)傳送指令包括寄存器間接尋址,基址偏移和基址變址,
            說明:在任何情況下都需要有一個(gè)ARM寄存器來寄存地址,該地址靠近
            需要傳送數(shù)據(jù)的地址。
            舉例: LDR r0, [r1] ; r1內(nèi)數(shù)值代表的存儲(chǔ)器位置的內(nèi)容讀入r0
            STR r0, [r1] ; 將r0寫入r1內(nèi)數(shù)值代表的存儲(chǔ)器位置

            前變址(pre-indexed)
            說明:基址寄存器不包含確定地址,在基址上加上不超過4KB
            的偏移量來尋址
            舉例: LDR r0, [r1, #4] ; 尋址r1+4
            自動(dòng)變址的前變址:
            說明:自動(dòng)變址時(shí),會(huì)同時(shí)實(shí)現(xiàn)對(duì)基址寄存器的修改。
            舉例:LDR r0, [r1, #4]! ; 尋址r1+4并將r1+=4
            后變址(post-indexed)
            說明:基址不加偏移尋址,立即數(shù)偏移量僅用作基址修正
            舉例: LDR r0, [r1], #4 ; 尋址r1,并將r1+=4
            任意字節(jié)對(duì)齊的指令:LDRB

            多寄存器數(shù)據(jù)傳送和塊傳送(塊傳送略)
            說明:同時(shí)存取幾個(gè)寄存器,允許16個(gè)寄存器的任意子集合用單條
            指令傳送。支持自動(dòng)變址
            舉例: LDMIA r1, {r0, r2, r5} ;將[r1],[r1+4],[r1+8]分別
            讀入r0, r2, r5

            ------------------------------------------------------------------------------
            控制流指令
            轉(zhuǎn)移指令(branch)
            說明:無條件轉(zhuǎn)移B,BAL
            舉例: B LABEL ; LABEL為某個(gè)位置
            條件轉(zhuǎn)移
            說明: BEQ 相等
            BNE 不等
            BPL 非負(fù)
            BMI 負(fù)
            BCC 無進(jìn)位
            BCS 有進(jìn)位
            BLO 小于(無符號(hào)數(shù))
            BHS 大于等于(無符號(hào)數(shù))
            BHI 大于(無符號(hào)數(shù))
            BLS 小于等于(無符號(hào)數(shù))
            BVC 無溢出(有符號(hào)數(shù))
            BVS 有溢出(有符號(hào)數(shù))
            BGT 大于(有符號(hào)數(shù))
            BGE 大于等于(有符號(hào)數(shù))
            BLT 小于(有符號(hào)數(shù))
            BLE 小于等于(有符號(hào)數(shù))
            和其中BCC和BLO,BCS和BHS的二進(jìn)制代碼相同
            條件執(zhí)行
            說明:有時(shí)可以用條件執(zhí)行來代替轉(zhuǎn)移,要使用條件執(zhí)行,要在3字符
            的操作碼之后增加2字符的條件碼,條件碼應(yīng)該在其他任何
            修正碼之前。
            舉例: CMP r0, #5
            ADDNE r1, r1, r0
            SUBNE r1, r1, r2
            ; 在r0!=5的情況下才會(huì)執(zhí)行后續(xù)加減語句
            轉(zhuǎn)移和鏈接指令和子程序返回指令
            說明:用于跳轉(zhuǎn)并返回,比如子程序,BL指令,注意不能嵌套子程序,
            否則上一級(jí)的返回地址將被下一級(jí)的返回地址覆蓋,這時(shí)應(yīng)該
            把返回地址和變量保存到堆棧上,使用STMFD和LDMFD
            監(jiān)控程序調(diào)用(略)
            說明:軟中斷相關(guān),可用于提供IO訪問
            跳轉(zhuǎn)表(略)
            說明:用于子程序列表較長時(shí),注意要檢測(cè)跳轉(zhuǎn)表越界

            ------------------------------------------------------------------------------
            參考文獻(xiàn)
            《ARM SoC 體系結(jié)構(gòu)》第二版 Steve Furber著


            關(guān)鍵詞: arm指令集匯

            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉