哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

完善資料讓更多小伙伴認識你,還能領(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)分配的??臻g大小 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;};
這里面還有很多細節(jié)內(nèi)容,可能很多人都沒有深入研究過,感興趣的朋友可以自己實驗研究一下。
責任編輯:haq
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關(guān)注

    關(guān)注

    6078

    文章

    45565

    瀏覽量

    673143
  • keil
    +關(guān)注

    關(guān)注

    69

    文章

    1231

    瀏覽量

    173101

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

    深入剖析LC87F2608A:8位單片機的卓越之選

    深入剖析LC87F2608A:8位單片機的卓越之選 引言 在電子工程師的日常工作中,選擇一款合適的單片機至關(guān)重要。ON Semiconductor的LC87F2608A 8位單片機,以其豐富的功能
    的頭像 發(fā)表于 04-11 14:15 ?107次閱讀

    項目選型必看:單片機與PLC究竟該怎么選?

    工業(yè)控制為何用PLC而不用單片機? 這是一個在工業(yè)自動化領(lǐng)域非常經(jīng)典的問題。簡單來說, PLC是為工業(yè)環(huán)境而設(shè)計的“加固型”工業(yè)控制計算機,而單片機只是一個需要開發(fā)者從頭搭建系統(tǒng)的核心芯片。 雖然
    的頭像 發(fā)表于 03-27 15:47 ?215次閱讀
    項目選型必看:<b class='flag-5'>單片機</b>與PLC究竟該怎么選?

    Keil編譯錯誤匯總

    出現(xiàn)多重定義,而全局變量的定義一般在.c文件中,在對應(yīng)的.h文件中用extern引用。 3. keil在調(diào)試退出時,經(jīng)常出現(xiàn)“Encountered an improper argument
    發(fā)表于 01-21 07:40

    單片機解密是什么?

    芯片的其中一個類。 單片機(MCU)一般都有內(nèi)部程序區(qū)和數(shù)據(jù)區(qū)(或者其一)供用戶存放程序和工作數(shù)據(jù)(或者其一)。為了防止未經(jīng)授訪問或拷貝單片機的機內(nèi)程序,大部分單片機都帶有加密鎖定位或者加密
    發(fā)表于 12-30 08:19

    Keil中如何調(diào)試程序中變量的值變化呢?

    Keil中,如何調(diào)試程序中變量的值變化呢
    發(fā)表于 12-22 16:16

    不同位數(shù)的CPU的變量所占的內(nèi)存

    不同位數(shù)的CPU(單片機)的變量所占的內(nèi)存也不盡相同,具體如下表所示。 8位16位32位64位 char1 Byte1 Byte1 Byte1 Byte short int2 Byte2 Byte2
    發(fā)表于 12-09 07:30

    變量控件實驗

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

    Keil中使用J-Link attach到正在運行的代碼中

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

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

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

    請問rt-thread studio如何想keil一樣在線查看變量?

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

    怎么測單片機系統(tǒng)頻率

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

    單片機怎么驅(qū)動電機?

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

    怎樣學(xué)會單片機

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

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

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

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

    本文結(jié)合瑞薩Cortext-M85單片機RA8D1、Keil MDK,以及瑞薩自家的代碼初始化工具(Smart Configurator)給大家描述一下,快速在Keil MDK上點亮Cortext-M85
    的頭像 發(fā)表于 04-22 17:41 ?1481次閱讀
    瑞薩RA8系列教程 | 基于 <b class='flag-5'>Keil</b> 開發(fā) RA8<b class='flag-5'>單片機</b>
    新巴尔虎右旗| 渝中区| 南涧| 抚宁县| 包头市| 东丽区| 长顺县| 广饶县| 河西区| 绥宁县| 襄垣县| 江北区| 汪清县| 牟定县| 沂源县| 富蕴县| 平潭县| 日土县| 新巴尔虎右旗| 乌苏市| 德清县| 毕节市| 高清| 资溪县| 洛扎县| 石家庄市| 增城市| 宁强县| 左云县| 灵璧县| 泸溪县| 石阡县| 海晏县| 清河县| 淮南市| 赤壁市| 中江县| 龙陵县| 安康市| 竹北市| 青龙|