在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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中的MOV指令

            作者: 時間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
            ARM中MOV指令格式是這樣的

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

            op2是占了12位,其中bit11-bit8是移位數(shù)(rotate),bit7-0是一個8位的立即數(shù)(imm),MOV Rn, op2,執(zhí)行之后,Rn=op2 >> (rotate * 2),這里的移位是循環(huán)右移,這就決定了MOV指令不是所有的立即數(shù)都能表示的,以下是幾個例子:

            1、mov r3, #0x56000000

            雖然0x56000000是一個32位的數(shù),但是可以找到這么一個8位立即數(shù),通過右移得到,看下機(jī)器碼e3a03456,展開成二進(jìn)制,對照下格式

            1110 0011 1010 0000 0011 0100 0101 0110

            cond[31:28]=1110

            [27:26]=00

            L[25]=1,代表op2是一個立即數(shù)

            OpCode[24:21]=1101

            S[20]=0

            Rn[19:16]=0000

            Rd[15:12]=0011,R3

            Op2[11:8]=0100,右移4 * 2位

            Op2[7:0]=0101 0110,8位立即數(shù),0x56

            首先要將0x56擴(kuò)展成32位的無符號數(shù),0x00000056,然后循環(huán)右移8位,就得到了0x56000000

            2、mov r3, #0x56000014

            0x56000014是無法通過移位來得到的,這時編譯器會報(bào)錯,C語言編寫的程序,編譯器會這樣來處理:

            mov r3, #0x56000000

            add r3, r3, #0x14

            代替mov的另外一條指令就是ldr,或許會更方便點(diǎn)。

            看了2440的datasheet,最令人費(fèi)解的就是rotate了,習(xí)慣了C語言里的邏輯右移,把循環(huán)右移和邏輯右移混淆了。



            關(guān)鍵詞: ARM中MOV指

            評論


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

            關(guān)閉