女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

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

Q4MP_gh_c472c21 ? 來源:strongerHuang ? 作者:strongerHuang ? 2021-10-29 10:20 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

Keil C51、8位單片機(jī)

這一節(jié)基于Keil C51工具,8位單片機(jī)(AT89C51)進(jìn)行測(cè)試。
//char a;
void main(void){  while(1)  {  }}
這是一個(gè)很簡(jiǎn)單的Demo,只針對(duì)變量占用空間大小進(jìn)行測(cè)試,主要是對(duì)比data的大小,初始值為9。(其中系統(tǒng)【啟動(dò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位單片機(jī)

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

int main(void){  while(1)  {//    a++;  }}
這也是一個(gè)很簡(jiǎn)單的Demo,主要是對(duì)比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個(gè)字節(jié)? 答案:只占了一個(gè)字節(jié),因?yàn)?2位機(jī)是4字節(jié)為一個(gè)“單元”,一個(gè) char 只占用了其中1字節(jié)(類似結(jié)構(gòu)體占用空間大小,這里還牽涉到大小端對(duì)齊模式)。 再舉一個(gè)例子:定義4個(gè) char型變量,還是占用4字節(jié)空間(short原理一樣)再次提示:

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

char a;int b;char c;

這里就會(huì)占用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 類似,如果定義兩個(gè) short 也是占用4個(gè)字節(jié)。 3.int占4字節(jié)

定義變量:

int a;

編譯結(jié)果:

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

32位機(jī),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é)

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

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

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

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

  • short:占2字節(jié)

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

  • double:占8字節(jié)

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

    關(guān)注

    6067

    文章

    44969

    瀏覽量

    649195
  • keil
    +關(guān)注

    關(guān)注

    69

    文章

    1223

    瀏覽量

    169398

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    基于Keil開發(fā)瑞薩RA8單片機(jī)

    這兩年單片機(jī)行業(yè)也開始卷起來了,各大廠商紛紛推出各種高性能的單片機(jī)
    的頭像 發(fā)表于 05-07 10:33 ?637次閱讀
    基于<b class='flag-5'>Keil</b>開發(fā)瑞薩RA8<b class='flag-5'>單片機(jī)</b>

    瑞薩RA8系列教程 | 基于 Keil 開發(fā) RA8單片機(jī)

    本文結(jié)合瑞薩Cortext-M85單片機(jī)RA8D1、Keil MDK,以及瑞薩自家的代碼初始化工具(Smart Configurator)給大家描述一下,快速在Keil MDK上點(diǎn)亮Cortext-M85
    的頭像 發(fā)表于 04-22 17:41 ?423次閱讀
    瑞薩RA8系列教程 | 基于 <b class='flag-5'>Keil</b> 開發(fā) RA8<b class='flag-5'>單片機(jī)</b>

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

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

    32位電機(jī)驅(qū)動(dòng)單片機(jī)ZH521X產(chǎn)品概述

    ZH521X系列類單片機(jī)是一款低功耗,高性能,資源豐富,M0內(nèi)核的電機(jī)控制專用單片機(jī)。集成32k字節(jié)代碼存儲(chǔ)器EFLASH、4k字節(jié)SRAM。
    的頭像 發(fā)表于 11-25 14:49 ?872次閱讀
    32位電機(jī)驅(qū)動(dòng)<b class='flag-5'>單片機(jī)</b>ZH521X產(chǎn)品概述

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

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

    基于51單片機(jī)的手動(dòng)數(shù)字時(shí)鐘

    具體實(shí)現(xiàn)功能由51單片機(jī)+8位共陰數(shù)碼管+獨(dú)立按鍵構(gòu)成。具體功能:(1)利用數(shù)碼管顯示時(shí)分秒,顯示格式為“時(shí)-分-秒”;(2)利用6個(gè)按鍵控制時(shí)、分、秒,設(shè)定好后自動(dòng)開始時(shí)鐘顯示;(3)設(shè)置秒復(fù)位
    的頭像 發(fā)表于 10-22 14:12 ?597次閱讀
    基于51<b class='flag-5'>單片機(jī)</b>的手動(dòng)數(shù)字時(shí)鐘

    單片機(jī)怎么寫入程序

    程序通常涉及以下幾個(gè)步驟: 選擇單片機(jī)和開發(fā)環(huán)境 : 確定項(xiàng)目需求,選擇合適的單片機(jī)型號(hào)。 安裝相應(yīng)的開發(fā)環(huán)境,如Keil、IAR、MPLAB等。 硬件連接 : 將單片機(jī)連接到開發(fā)板或
    的頭像 發(fā)表于 10-21 11:21 ?2317次閱讀

    51單片機(jī)(一款國(guó)產(chǎn)8位高性能Flash的接近感應(yīng)單片機(jī)XD08M3232體驗(yàn)感)

    跟大家分享一下: 第一,這款單片機(jī)是使用Keil編譯、調(diào)試、仿真,對(duì)絕大部分工程師來說還是非常熟悉的,好上手,特別方便。 第二,這顆單片機(jī)的內(nèi)存比較大,承載著8K字節(jié)的 FLASH、1
    發(fā)表于 09-25 15:15

    如何將hex文件燒錄進(jìn)單片機(jī)

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

    keil可以讀出單片機(jī)的程序嗎

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

    keil軟件怎么運(yùn)行寫好的程序

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

    如何提高單片機(jī)的運(yùn)算效率之FPU

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

    Keil變量不被初始化方法

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

    何用keil單片機(jī)燒錄程序

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

    51單片機(jī)燒錄軟件怎么用

    準(zhǔn)備工作 確保您已經(jīng)安裝了51單片機(jī)燒錄軟件,如Keil、IAR等。 準(zhǔn)備好51單片機(jī)開發(fā)板和燒錄器,如STC-ISP等。 確保您的計(jì)算機(jī)已經(jīng)安裝了相應(yīng)的驅(qū)動(dòng)程序。 安裝燒錄軟件 從官方網(wǎng)站或可
    的頭像 發(fā)表于 08-22 09:26 ?2730次閱讀