色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何用Keil來驗證單片機變量占多少字節(jié)

Q4MP_gh_c472c21 ? 來源:strongerHuang ? 作者:strongerHuang ? 2021-10-29 10:20 ? 次閱讀

首先問大家兩個問題:
  • 8位單片機定義一個int型變量,占幾個字節(jié)?
  • 32位單片機定義一個char型變量,占幾個字節(jié)?
我敢說很多人都不知道,或者存在疑惑。具體占多少字節(jié),其實通過手動驗證一下就知道了。 今天結(jié)合Keil C51(AT89C51),以及Keil MDK(STM32)為大家驗證一下 char、short、int、float、double 到底占幾字節(jié)空間。

Keil C51、8位單片機

這一節(jié)基于Keil C51工具,8位單片機(AT89C51)進行測試。
//char a;
void main(void){  while(1)  {  }}
這是一個很簡單的Demo,只針對變量占用空間大小進行測試,主要是對比data的大小,初始值為9。(其中系統(tǒng)【啟動文件占用了9字節(jié)RAM空間) 1.char占1字節(jié)

定義變量:

char a;

編譯結(jié)果:

Program Size: data=10.0 xdata=0 code=17
2.short占2字節(jié)

定義變量:

short a;

編譯結(jié)果:

Program Size: data=11.0 xdata=0 code=17

3.int占2字節(jié)

定義變量:

int a;

編譯結(jié)果:

Program Size: data=11.0 xdata=0 code=17

4.float占4字節(jié)

定義變量:

float a

編譯結(jié)果:

Program Size: data=13.0 xdata=0 code=17

5.double占4字節(jié)

定義變量:

double

編譯結(jié)果:

Program Size: data=13.0 xdata=0 code=17

Keil MDK、32位單片機

這一節(jié)基于Keil MDK工具,32位單片機(STM32)進行測試。
//char a;

int main(void){  while(1)  {//    a++;  }}
這也是一個很簡單的Demo,主要是對比RW-data的大小,初始值為0。(其中 ZI-data=1024 為系統(tǒng)分配的棧空間大小 1.char占1字節(jié)

定義變量:

char a;

編譯結(jié)果:

Program Size: Code=512 RO-data=436 RW-data=4 ZI-data=1028

啥?占了4個字節(jié)? 答案:只占了一個字節(jié),因為32位機是4字節(jié)為一個“單元”,一個 char 只占用了其中1字節(jié)(類似結(jié)構(gòu)體占用空間大小,這里還牽涉到大小端對齊模式)。 再舉一個例子:定義4個 char型變量,還是占用4字節(jié)空間(short原理一樣)再次提示:

注意4字節(jié)為一個“單元”,超過這個單元就分配到“下一個單元”,比如:

char a;int b;char c;

這里就會占用12(3 * 4)字節(jié)空間(a、b、c各自占4字節(jié))。

2.short占2字節(jié)

定義變量:

short a;

編譯結(jié)果:

ProgramSize:Code=512RO-data=436RW-data=4ZI-data=1028

這里和 char 類似,如果定義兩個 short 也是占用4個字節(jié)。 3.int占4字節(jié)

定義變量:

int a;

編譯結(jié)果:

ProgramSize:Code=512RO-data=436RW-data=4ZI-data=1028

32位機,int占用4字節(jié)沒什么說的。 4.float占4字節(jié)

定義變量:

float a;

編譯結(jié)果:

ProgramSize:Code=520RO-data=436RW-data=4ZI-data=1028

5.double占8字節(jié)

定義變量:

double a;

編譯結(jié)果:

ProgramSize:Code=1156RO-data=436RW-data=8ZI-data=1024

總結(jié)

上面驗證情況在Keil C51、 8位單片機(AT89C51)中:
  • char:占1字節(jié)

  • short、int:占2字節(jié)

  • float、double:占4字節(jié)

在Keil MDK、 32位單片機(STM32)中:
  • char:占1字節(jié)

  • short:占2字節(jié)

  • int、float:占4字節(jié)

  • double:占8字節(jié)

通過對比上面幾個變量,以及編譯結(jié)果,得出一些結(jié)論。 1.變量占多少字節(jié),與處理器(以及編譯器)有關(guān); 2.浮點數(shù)運算更占代碼空間,且double比float更占空間。上面基于32位機中進行了a++;運算,明顯float、double打碼量(code)更大。 3.變量數(shù)據(jù)對齊規(guī)則和結(jié)構(gòu)體一樣。經(jīng)典的面試題:計算下面結(jié)構(gòu)體占用多少字節(jié)?
struct Str{  char a;  short b;  int c;  char d;};
這里面還有很多細(xì)節(jié)內(nèi)容,可能很多人都沒有深入研究過,感興趣的朋友可以自己實驗研究一下。
責(zé)任編輯:haq
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關(guān)注

    關(guān)注

    6035

    文章

    44554

    瀏覽量

    634650
  • keil
    +關(guān)注

    關(guān)注

    68

    文章

    1212

    瀏覽量

    166840

原文標(biāo)題:用Keil驗證8位和32位單片機變量占用空間大小

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    單片機Debug工具性能對比 單片機調(diào)試常用命令

    。以下是對單片機調(diào)試工具性能的簡要對比以及一些常用的調(diào)試命令。 單片機Debug工具性能對比 Keil uVision 性能 :Keil uVision 是一款功能強大的集成開發(fā)環(huán)境(
    的頭像 發(fā)表于 12-19 09:56 ?130次閱讀

    【藍橋杯單片機】第二章 開發(fā)環(huán)境與工具的安裝

    本章介紹單片機設(shè)計與開發(fā)項目的開發(fā)環(huán)境與工具。以下是所需要安裝的軟件以及附加的強力卸載軟件:下面跟著教程進行開發(fā)環(huán)境的配置與安裝:第一節(jié)keil5安裝該步驟為下載keil5官方安裝包
    的頭像 發(fā)表于 10-30 08:00 ?378次閱讀
    【藍橋杯<b class='flag-5'>單片機</b>】第二章 開發(fā)環(huán)境與工具的安裝

    如何將hex文件燒錄進單片機

    :確保你的計算機上安裝了適用于你單片機型號的開發(fā)環(huán)境,如Keil、IAR Embedded Workbench等。以Keil為例,你需要從Keil官網(wǎng)下載并安裝適合你
    的頭像 發(fā)表于 09-02 10:34 ?1886次閱讀

    keil可以讀出單片機的程序嗎

    Keil是一款廣泛應(yīng)用于單片機程序開發(fā)的軟件,它提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案。然而,關(guān)于Keil是否能直接“讀出”單片機的程
    的頭像 發(fā)表于 09-02 10:32 ?911次閱讀

    keil軟件怎么運行寫好的程序

    Keil軟件是一款功能強大的嵌入式開發(fā)工具,廣泛應(yīng)用于單片機、ARM、DSP等嵌入式系統(tǒng)的開發(fā)。本文將介紹如何使用Keil軟件運行寫好的程序。 安裝Keil軟件 首先,需要從
    的頭像 發(fā)表于 09-02 10:29 ?1920次閱讀

    如何提高單片機的運算效率之FPU

    只要STM32或者其他32位單片機,自帶FPU功能,就可以加速float類型數(shù)據(jù)的加減乘除運算。在STM32中要啟用FPU,需要啟動滿足兩個宏:(__FPU_PRESENT==1)&&
    的頭像 發(fā)表于 08-30 11:47 ?555次閱讀
    如何提高<b class='flag-5'>單片機</b>的運算效率之FPU

    Keil變量不被初始化方法

    有些時候在我們的應(yīng)用過程中要求變量有連續(xù)性,或者現(xiàn)場保留,例如Bootloader跳轉(zhuǎn),某種原因的復(fù)位過程中我們有些關(guān)鍵變量不能被初始化,在不同的編譯環(huán)境下有不同的設(shè)置,本文就這個操作做總結(jié),分別
    的頭像 發(fā)表于 08-30 11:47 ?647次閱讀
    <b class='flag-5'>Keil</b>中<b class='flag-5'>變量</b>不被初始化方法

    何用keil單片機燒錄程序

    以下是詳細(xì)的步驟: 安裝Keil軟件 : 首先,您需要從Keil官網(wǎng)下載適合您單片機型號的MDK-ARM軟件。 安裝過程中,請按照提示操作,選擇適合您的開發(fā)板和單片機型號。 創(chuàng)建新項目
    的頭像 發(fā)表于 08-22 09:28 ?3190次閱讀

    PY32系列單片機開發(fā)板 常用型號都有 支持Keil,IAR進行開發(fā)

    、IOT、傳感器、電動工具、電機控制等領(lǐng)域。 PY32系列單片機與大部份國產(chǎn)通用型MCU一樣,支持Keil,IAR進行開發(fā)。芯嶺技術(shù)提供目前PY32系列主流單片機開發(fā)板和PY32 link仿真工具,目前有PY32F002A/00
    的頭像 發(fā)表于 05-22 14:48 ?1050次閱讀
    PY32系列<b class='flag-5'>單片機</b>開發(fā)板 常用型號都有 支持<b class='flag-5'>Keil</b>,IAR進行開發(fā)

    何用IAR軟件把程序下載到stm8s單片機里?

    各位大神,如何用IAR軟件把程序下載到stm8s單片機里,把步驟說的詳細(xì)一點
    發(fā)表于 05-15 07:18

    單片機RAM不夠用怎么解決?

    來自一位用戶的咨詢,麻煩幫忙解答。越詳細(xì)越好,有圖有真相。如有相關(guān)的視頻、文檔也可以輔助說明,謝謝。 單片機RAM不夠用怎么辦? 單片機都有RAM,如果我們一下子定義了一大堆的變量,使得變量
    發(fā)表于 02-02 07:35

    單片機變量存儲大小由什么決定?

    最近看到群友在討論【單片機變量存儲大小由什么決定?】的話題。
    的頭像 發(fā)表于 01-26 10:11 ?670次閱讀
    <b class='flag-5'>單片機變量</b>存儲大小由什么決定?

    keil arm工程中結(jié)構(gòu)體1字節(jié)對齊如何實現(xiàn)

    Keil Arm工程中,結(jié)構(gòu)體的對齊方式可以通過使用特定的編譯器指令或者關(guān)鍵字實現(xiàn)。結(jié)構(gòu)體的對齊方式會直接影響結(jié)構(gòu)體變量在內(nèi)存中的布局和對齊邊界,從而對程序的性能和存儲空間占用產(chǎn)生影響。 結(jié)構(gòu)體
    的頭像 發(fā)表于 01-05 14:40 ?3748次閱讀

    keil5mdk怎么編寫51單片機程序

    編寫51單片機程序需要以下步驟: 編寫程序框架:首先,你需要定義程序所需要的變量和常量,以及設(shè)置中斷向量和寄存器的初始狀態(tài)。這些信息可以根據(jù)程序的需求確定。 引入必要的庫文件:根據(jù)程序的需求,你
    的頭像 發(fā)表于 12-25 14:54 ?1543次閱讀

    8051單片機和STM32單片機的編程環(huán)境對比

    比較流行的單片機環(huán)境有keil和IAR,這兩種環(huán)境可以覆蓋市面上90%的單片機型號,而且都提供了函數(shù)庫。根據(jù)單片機位數(shù)不同,這兩個編程環(huán)境也有不同的版本。
    發(fā)表于 12-25 10:01 ?1466次閱讀
    8051<b class='flag-5'>單片機</b>和STM32<b class='flag-5'>單片機</b>的編程環(huán)境對比
    主站蜘蛛池模板: 99re热有精品国产| 久久久无码精品亚洲A片软件 | 纲手裸乳被爆白浆| 4438全国免费观看| 真实国产乱子伦精品一区二区三区 | 伊人热| 亚洲日韩在线天堂一| 香蕉59tv视频| 午夜福利电影网站鲁片大全| 熟女久久久久久久久久久| 日韩在线 无码 精品| 日韩一区二区天海翼| 色欲色香天天天综合| 色欲AV精品一区二区入口| 色一伦一情一区二区三区| 神马电影院午夜神福利在线观看| 日韩成人黄色| 特级毛片内射WWW无码| 午夜福利体验免费体验区| 胸太大被男同桌吃好爽| 亚洲国产韩国欧美在线不卡| 亚洲精品一二三区-久久| 亚洲中文字幕日产乱码2020| 一级毛片免费在线播放| 中文字幕 人妻熟女| 97资源站超碰在线视频| 啊好大好厉害好爽真骚| 国产成+人欧美+综合在线观看| 国产精品JIZZ视频免费| 国产色偷偷男人的天堂| 精品无码久久久久久动漫| 久久综合亚洲色hezyo| 男人把女人桶到爽免费看视频 | 国产精品久久久久久久久LI无码| 国产人妻XXXX精品HD电影| 精品国产乱码久久久久久人妻 | 国产熟妇无码一区二| 久草在线新是免费视频| 免费成年人在线视频| 国产电影一区二区三区| 99在线观看视频免费|