在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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-11 來源:網(wǎng)絡(luò) 收藏
            我這里講的快速是指能夠快速的上手工作,但任何一門學(xué)問都包含著比較具體的知識(shí)在里面,這些知識(shí)是需要長(zhǎng)年累月的積累才可以逐漸從未知到已知,從笨拙到熟練.快速只是一種學(xué)知識(shí)的步驟,能夠在短的時(shí)間里把那些不常用的知識(shí)排到后面來學(xué)習(xí).

            一些書中介紹,不需要了解匯編語(yǔ)言就可以進(jìn)行Arm的編程,我想對(duì)于一般的開發(fā)者來講C語(yǔ)言大概是夠用了,但不了解匯編,很多原理性和底層的工作就會(huì)做起來困難了.即要快速,又要保證一定的匯編知識(shí),那么學(xué)的時(shí)候可以走馬觀花的看一下,至少有個(gè)印象,再以后如果碰到的時(shí)候,逐漸學(xué)習(xí)和加深就可以了.

            本文引用地址:http://www.biyoush.com/article/201611/316884.htm

            記憶是比較苦澀的事情,我覺得使用例子最好的方法,例子再加查找,以后用起來比較方便.前面講過,Arm中有兩種指令集,一種叫Arm指令集,一種叫Thumb指令集.資料中使用了一大堆理由說Thumb的16位指令集比Arm 32位指令集要性能好,這是因?yàn)樗煌耆韧赑C的32 80386指令集與8086/8088的16位指令集的區(qū)別,再具體的原因?qū)τ诔鯇W(xué)者可以不去理會(huì).

            我們講一下Arm 32位指令集的尋址方式:

            1. 寄存器尋址:

            MOV R1,R2;讀取R2的值到R1中

            SUB R0,R1,R2;將R1的值減去R2的值,結(jié)果保存到R0中

            2.立即尋址:

            SUBSR0,R0,#1;R0減1,結(jié)果保存到R0中,并影響標(biāo)志位

            MOV R0,#0xFF000 ;將0xFF000存儲(chǔ)到R0中

            3. 寄存器移位尋址:

            MOV R0,R2,LSL #3;R2的值左移3位,結(jié)果存入R0

            ANDS R1,R1,R2,LSL R3 ;R2的值左移R3位,然后與R1相與,結(jié)果存入R1.

            移位操作有這樣幾種: LSL,LSR,ASR,ROR,RRX,具體含義可以查相關(guān)手冊(cè)

            4.寄存器間接尋址:

            LDRR1,[R2];將R2指向的存儲(chǔ)單元的數(shù)據(jù)讀出,保存到R1中

            SWPR1,R1,R[2] ;將R1的值與R2指定的存儲(chǔ)單元的值進(jìn)行交換.

            5.基址尋址:

            LDRR2,[R3,,0x0C];讀取R3+0x0C地址上的存儲(chǔ)單元的內(nèi)容,存入R2中

            STRR1,[R0,#-4]!;先R0=R0-4,然后把R1的值保存到R0指定的存儲(chǔ)單元

            LDRR1,[R0,R3,LSL #1];將R0+R3*2地址上的存儲(chǔ)單元中的內(nèi)容讀出,保存到R1中.

            6.多寄存器尋址:

            LDMAR1! {R1-R7,R12};將R1指向單元的數(shù)據(jù)讀出,放到R1~R7,R12中,R1自動(dòng)加1

            STMIAR0!,{R2-R7,R12};與上面方向相反,R0自動(dòng)加1

            我總感覺書中寫的方向不對(duì)

            7.堆棧尋址:

            STMFD SP!,{R1-R7,LR}

            LDMFD SP!,{R1-R7,LR}

            可以參考前面的例子,只不過是堆棧SP寄存器而已

            8.塊拷貝尋址:

            STMIA R0,{R1-R7}

            STMIB R0,{R1-R7}

            STMDA R0! {R1-R7}

            STMDB R0! {R1-R7}

            9.相對(duì)尋址:

            BLSUBR1;調(diào)用到SUBR1子程序

            BEQ LOOP;條件跳轉(zhuǎn)到LOOP標(biāo)號(hào)處

            所謂尋址方式,就是指令的表達(dá)方式,這種表達(dá)方式大概明白了,也就比較容易理解各種指令的含義了.匯編是種學(xué)起來比較討厭的東西,不同CPU系列的計(jì)算機(jī)匯編語(yǔ)言都不統(tǒng)一,不像高級(jí)語(yǔ)言那樣,語(yǔ)法比較一致,而且指令會(huì)很多,尋址方式也不同,對(duì)于常時(shí)間只是有同一種CPU的匯編編程的人來講,匯編也不是什么難事,但對(duì)于工作范圍比較廣的開發(fā)者來講,記憶指令的確是個(gè)麻煩的事情.幸好現(xiàn)在大多單片機(jī)都可以使用C語(yǔ)言來編程,但對(duì)匯編的了解還是有好處的,它能夠幫助你理解更底層的問題.



            關(guān)鍵詞: Arm指令集尋址方

            評(píng)論


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

            關(guān)閉