chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

首先問(wèn)大家兩個(gè)問(wèn)題:
  • 8位單片機(jī)定義一個(gè)int型變量,占幾個(gè)字節(jié)?
  • 32位單片機(jī)定義一個(gè)char型變量,占幾個(gè)字節(jié)?
我敢說(shuō)很多人都不知道,或者存在疑惑。具體占多少字節(jié),其實(shí)通過(guò)手動(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)分配的??臻g大小 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è)“單元”,超過(guò)這個(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é)沒(méi)什么說(shuō)的。 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é)

通過(guò)對(duì)比上面幾個(gè)變量,以及編譯結(jié)果,得出一些結(jié)論。 1.變量占多少字節(jié),與處理器(以及編譯器)有關(guān); 2.浮點(diǎn)數(shù)運(yùn)算更占代碼空間,且double比f(wàn)loat更占空間。上面基于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)容,可能很多人都沒(méi)有深入研究過(guò),感興趣的朋友可以自己實(shí)驗(yàn)研究一下。
責(zé)任編輯:haq
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6074

    文章

    45341

    瀏覽量

    663650
  • keil
    +關(guān)注

    關(guān)注

    69

    文章

    1224

    瀏覽量

    171828

原文標(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)推薦

    怎么學(xué)好單片機(jī)

    編譯出來(lái)的CODE比較空間,一般用于移植性通用型要求高的嵌入式軟件領(lǐng)域,或者比較大的單片機(jī)項(xiàng)目,或者要求開(kāi)發(fā)速度而對(duì)價(jià)格不敏感的產(chǎn)品。而匯編剛好相反,對(duì)利潤(rùn)薄,成本低,開(kāi)發(fā)難度不大的行業(yè)使用,比如
    發(fā)表于 12-04 07:16

    變量控件實(shí)驗(yàn)

    目錄1、實(shí)驗(yàn)?zāi)康?、實(shí)驗(yàn)設(shè)備3、實(shí)驗(yàn)步驟3.1新建工程3.2新建畫(huà)面3.3添加控件3.4模擬工程3.5硬件驗(yàn)證1、實(shí)驗(yàn)?zāi)康?b class='flag-5'>單片機(jī)或PLC的串口與智能顯示卡相連驅(qū)動(dòng)大尺寸VGA顯示器或電視機(jī)進(jìn)行
    的頭像 發(fā)表于 11-20 15:04 ?565次閱讀
    <b class='flag-5'>變量</b>控件實(shí)驗(yàn)

    Keil中使用J-Link attach到正在運(yùn)行的代碼中

    一、設(shè)置驗(yàn)證變量 使用 SDK 例程 igpio_led_output,為了便于驗(yàn)證,定義全局變量 count,在 while(1) 中累加。 圖 1 二、設(shè)置
    發(fā)表于 11-19 06:54

    嵌入式與單片機(jī)定義及區(qū)別

    、SRAM、Flash存儲(chǔ)器及其他必要模塊集成在一塊芯片上。這種超大規(guī)模集成電路技術(shù)使得單片機(jī)變得既小巧又強(qiáng)大,能夠輕松應(yīng)對(duì)各種復(fù)雜的計(jì)算和控制任務(wù)。 然而,“單片機(jī)”這個(gè)名稱其實(shí)源自于早期的半導(dǎo)體
    發(fā)表于 11-17 08:11

    C語(yǔ)言開(kāi)發(fā)單片機(jī)為什么大多數(shù)都采用全局變量的形式?

    單片機(jī)的芯片資源從來(lái)都是 “精打細(xì)算” 的級(jí)別,CPU 主頻普遍不高,RAM 總?cè)萘勘揪途o張,分給棧空間的更是少得可憐。要是像普通軟件那樣,依賴函數(shù)返回值傳遞數(shù)據(jù)、頻繁用局部變量周轉(zhuǎn),一來(lái)二去占用
    的頭像 發(fā)表于 11-12 14:29 ?229次閱讀
    C語(yǔ)言開(kāi)發(fā)<b class='flag-5'>單片機(jī)</b>為什么大多數(shù)都采用全局<b class='flag-5'>變量</b>的形式?

    請(qǐng)問(wèn)rt-thread studio如何想keil一樣在線查看變量

    rt-thread studio如何想keil一樣在線查看變量?是我操作不對(duì)嗎?還是本來(lái)就沒(méi)有這個(gè)功能?
    發(fā)表于 09-17 06:07

    怎么測(cè)單片機(jī)系統(tǒng)頻率

    單片機(jī)系統(tǒng)頻率是指單片機(jī)工作時(shí)的時(shí)鐘頻率,它直接影響單片機(jī)的運(yùn)行速度和處理能力,準(zhǔn)確測(cè)量系統(tǒng)頻率對(duì)單片機(jī)應(yīng)用開(kāi)發(fā)、程序調(diào)試和性能優(yōu)化具有重要意義。測(cè)量
    的頭像 發(fā)表于 07-25 11:39 ?480次閱讀

    單片機(jī)怎么驅(qū)動(dòng)電機(jī)?

    在各類自動(dòng)化設(shè)備和智能裝置中,電機(jī)是重要的執(zhí)行部件,而單片機(jī)作為控制核心,需要通過(guò)特定的方式驅(qū)動(dòng)電機(jī)運(yùn)轉(zhuǎn)。單片機(jī)驅(qū)動(dòng)電機(jī)并非直接連接即可,而是要根據(jù)電機(jī)類型和功率,搭配合適的驅(qū)動(dòng)電路,才能實(shí)現(xiàn)穩(wěn)定
    的頭像 發(fā)表于 07-25 09:31 ?440次閱讀

    單片機(jī)怎么燒程序

    單片機(jī)燒程序是將編寫(xiě)好的程序代碼寫(xiě)入單片機(jī)內(nèi)部存儲(chǔ)單元,讓單片機(jī)按照預(yù)設(shè)邏輯工作的過(guò)程,是單片機(jī)應(yīng)用開(kāi)發(fā)中不可或缺的環(huán)節(jié)。無(wú)論是簡(jiǎn)單的燈光控制程序,還是復(fù)雜的工業(yè)控制算法,都需要通過(guò)燒
    的頭像 發(fā)表于 07-23 11:47 ?656次閱讀

    怎樣學(xué)會(huì)單片機(jī)?

    想學(xué)會(huì)單片機(jī)其實(shí)沒(méi)那么復(fù)雜,先把心態(tài)放平穩(wěn),別被那些五花八門(mén)的名詞嚇住。一開(kāi)始就得把 C 語(yǔ)言基礎(chǔ)打扎實(shí),位操作、指針、函數(shù)這些概念必須吃透,尤其是指針,單片機(jī)里操作寄存器、外設(shè)經(jīng)常要用到,搞不懂
    的頭像 發(fā)表于 07-23 10:23 ?465次閱讀
    怎樣學(xué)會(huì)<b class='flag-5'>單片機(jī)</b>?

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

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

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

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

    如何使用PN7制作具有5180字節(jié)UID的身份驗(yàn)證mifare plus?

    我正在開(kāi)發(fā)的讀卡器使用 PN5180。 我想讀取 7 字節(jié) UID 的 Mifare Plus ev1 卡 但 PN5180數(shù)據(jù)表僅解釋了4字節(jié) UID 卡。 如何使用 PN7 制作具有 5180 字節(jié) UID 的身份
    發(fā)表于 04-01 06:37

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

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

    單片機(jī)Debug與仿真區(qū)別

    單片機(jī)的開(kāi)發(fā)是一個(gè)復(fù)雜的過(guò)程,涉及到硬件設(shè)計(jì)、軟件開(kāi)發(fā)和測(cè)試等多個(gè)環(huán)節(jié)。為了確保單片機(jī)能夠按照預(yù)期工作,開(kāi)發(fā)者需要使用Debug和仿真技術(shù)來(lái)檢測(cè)和修正代碼中的錯(cuò)誤。 Debug(調(diào)試) Debug
    的頭像 發(fā)表于 12-19 09:47 ?1415次閱讀