<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        大小端判斷代碼解析

        作者:佚名   來源:本站原創   點擊數:  更新時間:2014年04月27日   【字體:
        大端模式:高位字節存在低位地址上
        小端模式:高位字節存在高位地址上
        用來判斷大端模式和小端模式的代碼如下
        //獲取CPU大小端模式,結果保存在cpu_endian里面
        void find_cpu_endian(void)
        int x=1;
        if(*(char*)&x==1)cpu_endian=0;                 //小端模式 
        else cpu_endian=1; //大端模式  
        if(*(char*)&x==1)解釋一下這一句.
        &x:取x的地址
        (char*)&x:將x的地址變成char類型的指針.指向的內容截取了int x中的第一個字節上的內容.
        (*(char*)&x==1):取出指針的內容判斷是否與1相同

        來看看匯編代碼

        movs r0,#0x01       //int x=1;
        ldrb r1,[r0,#0x00]  //加載r0中的無符號字節數據到r1
        cmp r1,#0x01    bne 0x08000266      //判斷r1中的值是否為1不是跳轉到266
        movs r1,#0x00       //給r1寄存器寫零
        ldr r2,[pc,#176]   //pc指針所在的地址加上#176得到的地址保存在r2上
        strb r1,[r2,#0x00]  //把r1的值保存在r2中的地址上返回endian的值
        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮