mips32和x86下的大小端模式判定

来源:http://www.cnblogs.com/dakewei/archive/2017/10/20/7699429.html
-Advertisement-
Play Games

一.背景 1.1 mips32搭載32bit vxworks操作系統 1.2 x86搭載64bit windows10操作系統 二.大小端模式判定前的準備 2.1 先要知道各種架構上各種整型數占據的bit數,也就是通過範圍來確定bit數 上一篇已經講過,特奉上地址如下: http://www.cnb ...


一.背景

1.1 mips32搭載32bit vxworks操作系統

1.2 x86搭載64bit windows10操作系統

二.大小端模式判定前的準備

2.1 先要知道各種架構上各種整型數占據的bit數,也就是通過範圍來確定bit數

上一篇已經講過,特奉上地址如下:

http://www.cnblogs.com/dakewei/p/7690847.html

2.2 mips32上的判定

代碼如下:

#include <stdio.h>

void main(void)

{

  unsigned long int ul = 1;

  unsigned char *p = &ul;

  p += (sizeof(unsigned long) - 1); /*因為mips32上unsigned long 類型占據了32個bit,因此移動3個位元組,以便到達最後一個位元組*/

  printf("*p = %d,p = %p,ul = %d,&ul = %p\n",*p,p,ul,&ul);

}

運行結果如下:

*p = 1,p = 0x80cf3fcb,ul = 1,&ul = 0x80cf3fc8  

對運行結果進行分析如下:

先回憶大小端的定義:

大端模式: 低位數據存儲在高地址

小端模式:低位數據存儲在低地址

那麼記憶體中數據的存放情況如下:

                   -------------------

0x80cf3fc8  |    0x00         |

     --------------------

0x80cf3fc9  |    0x00         |

        --------------------

0x80cf3fca |      0x00        |

                  --------------------

0x80cf3fcb |     0x01         |

                  --------------------

由此可以判定:筆者的mips32機器是大端機器(筆者的這台mips32機器是可以設置大小端的)

 

2.3 x86上的判定

代碼如下:

#include <stdio.h>

void main(void)

{

  unsigned long int ul = 1;

  unsigned char *p = &ul;

  p += (sizeof(unsigned long) - 1); /*因為x86上unsigned long 類型占據了64個bit,因此移動7個位元組,以便到達最後一個位元組*/

  printf("*p = %d,p = %p,ul = %d,&ul = %p\n",*p,p,ul,&ul);

}

運行結果如下:

*p = 0,p = 0xffffcc07,ul = 1,&ul = 0xffffcc00

對運行結果進行分析如下:

先回憶大小端的定義:

大端模式: 低位數據存儲在高地址

小端模式:低位數據存儲在低地址

那麼記憶體中數據的存放情況如下:

                   -------------------

0xffffcc00  |    0x01         |

     --------------------

0xffffcc01 |    0x00         |

        --------------------

0xffffcc02 |      0x00        |

                  --------------------

0xffffcc03 |     0x00        |

                  --------------------

0xffffcc04  |    0x00         |

     --------------------

0xffffcc05 |    0x00         |

        --------------------

0xffffcc06 |      0x00        |

                  --------------------

0xffffcc07 |     0x00         |

                  --------------------

由此可以判定:筆者的x86機器是小端機器

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 測試環境:centos 6.9 X64 mini 版 Oracle版本:11g r2 Oracle軟體包:db_112040_Linux-x86-64_1of7.zip;db_112040_Linux-x86-64_2of7.zip 靜默安裝的應答原文件路徑:/home/soft/database/ ...
  • with cte as( select bianma,fjbm from #tree where chkDisabled='true' union all select t.bianma,t.fjbm from cte c inner join #tree t on c.fjbm=t.bianma ... ...
  • 狀況:Red hat 6.4 swap分區不足 解決:擴充swap 解決步驟: 1.在一個目錄中創建一個swap文件,例如:vim /opt/swap 2.使用這條命令,新增3G大小的swap 3.創建交換空間 4.查看現有swap 5.啟用新增swap 6.檢查swap是否增加 7.修改 /etc ...
  • *******需要配置網易YUM源來安裝相關依賴包: [local_yum] name=local_yum baseurl=http://mirrors.163.com/centos/6/os/x86_64/ enabled=1 gpgcheck=0 1》Zabbix介紹: zabbix是一個國外的 ...
  • 1.本節使用的nand flash型號為K9F2G08U0M,它的命令如下: 1.1我們以上圖的read id(讀ID)為例,它的時序圖如下: 首先需要使能CE片選 1)使能CLE 2)發送0X90命令,併發出WE寫脈衝 3)複位CLE,然後使能ALE 4)發送0X00地址,併發出WE寫脈衝 5)設 ...
  • 每天寫一點,總有一天我這條鹹魚能變得更咸 cron服務是一個linux下 的定時執行工具,可以在無需人工干預的情況下運行作業。頻率可以劃分為 分鐘 小時 天 月 周,格式如下: 1.crontab 服務: service crond start 啟動服務 service crond stop 停止服 ...
  • (一)I2S匯流排概述: 音響數據的採集、處理和傳輸是多媒體技術的重要組成部分。眾多的數字音頻系統已經進入消費市場,例如數字音頻錄音帶、數字聲音處理器。對於設備和生產廠家來說,標準化的信息傳輸結構可以提高系統的適應性。I2S(Inter—IC Sound)匯流排是飛利浦公司為數字音頻設備之間的音頻數據傳 ...
  • 在給別人使用GUEST用戶登陸使用共用目錄,併在電腦上已將guest用戶啟用,但是報“登錄失敗:未授予用戶在此電腦上的請求登錄類型” 解決方法: 打開“控制面板”中的“管理工具” 在“管理工具”中選擇“本地安全策略” 選擇"本地安全策略"——“本地策略”——"用戶權利分配",在“用戶權利指派”右邊 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...