国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

程序本身如何知道自身大小?這是雞生蛋還是蛋生雞的問(wèn)題

開(kāi)發(fā) 前端
一般來(lái)說(shuō),const 聲明的函數(shù)將放在 RO-data 區(qū)。全局(或局部靜態(tài))未進(jìn)行初始化(或初始化為0)的變量放在 ZI-data 區(qū),當(dāng)然棧(stack)也會(huì)放在 ZI-data。

 [[351056]]

本文轉(zhuǎn)載自微信公眾號(hào)「魚(yú)鷹談單片機(jī)」,作者魚(yú)鷹Osprey。轉(zhuǎn)載本文請(qǐng)聯(lián)系魚(yú)鷹談單片機(jī)公眾號(hào)。

有些情況下,我們可能需要知道程序本身占用的空間大小,一般來(lái)說(shuō),我們可以從編譯結(jié)果中看到我們的程序到底有多大(不包含 ZI-data 部分):

還可以通過(guò)生成的bin文件大小來(lái)查看,這個(gè) bin 文件就是不需要經(jīng)過(guò)任何轉(zhuǎn)化直接燒錄到 flash 的數(shù)據(jù),當(dāng)然它也不包含 ZI-data,因?yàn)樗跏蓟?0,只需要在程序開(kāi)始時(shí)清零即可(該工作由庫(kù)函數(shù)自動(dòng)幫你完成),沒(méi)必要保存到 flash中浪費(fèi)空間。

Bin 文件生成方法(fromelf --bin !L --output hello.bin):

我們可以看一看這些數(shù)據(jù)的空間分布:

一般來(lái)說(shuō),const 聲明的函數(shù)將放在 RO-data 區(qū)。全局(或局部靜態(tài))未進(jìn)行初始化(或初始化為0)的變量放在 ZI-data 區(qū),當(dāng)然棧(stack)也會(huì)放在 ZI-data。

MDK的編譯器為我們提供了一些內(nèi)置變量,這些變量是由編譯鏈接之后自動(dòng)生成的,我們可以直接在程序中獲取,那么有哪些變量,又該如何獲取呢?

據(jù)魚(yú)鷹了解,MDK 內(nèi)置了如下變量(有些變量在有些情況下表示相同值):

  1. Image$$ER_IROM1$$Base; 
  2. Image$$ER_IROM1$$Limit; 
  3. Image$$ER_IROM1$$Length;   // 獲取總大小 
  4.  
  5. Load$$LR$$LR_IROM1$$Limit; // 這個(gè)和上面的效果一樣 
  6.  
  7. Image$$ER_IROM1$$RO$$Limit;  // 這個(gè)和上面的效果一樣 
  8.  
  9. Image$$RW_IRAM1$$Base; 
  10. Image$$RW_IRAM1$$Limit; 
  11. Image$$RW_IRAM1$$Length; 
  12.  
  13. Image$$RW_IRAM1$$ZI$$Base; 
  14. Image$$RW_IRAM1$$ZI$$Limit; 
  15. Image$$RW_IRAM1$$ZI$$Length; 

Image$$ER_IROM1$$Length 對(duì)應(yīng)于 Code + RO Data 的大小,而 base 和 limit 為這段空間的起始和結(jié)束地址。

Image$$RW_IRAM1$$Length 對(duì)應(yīng)于 RW-Data 的大小,而 base 和 limit 為這段空間的起始和結(jié)束地址。

Image$$RW_IRAM1$$ZI$$Length 對(duì)應(yīng)于 ZI-Data(包括STACK) 的大小,而 base 和 limit 為這段空間的起始和結(jié)束地址。

那么我們?cè)撊绾问褂眠@些變量呢?下面魚(yú)鷹提供C語(yǔ)言和匯編兩個(gè)版本:

  1. // C語(yǔ)言 
  2. extern int Image$$ER_IROM1$$Base; 
  3.  
  4. unsigned int base = (uint32_t)&Image$$ER_IROM1$$Base 
  5.  
  6. ; 匯編   
  7. IMPORT |Image$$ER_IROM1$$RO$$Base| 
  8. IMPORT |Image$$ER_IROM1$$RO$$Limit| 
  9.  
  10. IMPORT |Image$$RW_IRAM1$$RW$$Base| 
  11. IMPORT |Image$$RW_IRAM1$$RW$$Limit| 
  12.  
  13. IMPORT |Image$$RW_IRAM1$$ZI$$Base| 
  14. IMPORT |Image$$RW_IRAM1$$ZI$$Limit| 

首先使用 extern 關(guān)鍵聲明這個(gè)外部變量,int 類型。

但是你通過(guò)它的使用方式你會(huì)發(fā)現(xiàn),這個(gè)變量是不可以直接使用的,需要把對(duì)它進(jìn)行取地址,而它的地址才是你想要的數(shù)據(jù)。

事實(shí)上,這些內(nèi)置變量本身是不占用空間的的,和用戶聲明的變量是不同的。

我們可以這樣理解,這些變量存放在某個(gè)地址空間,這個(gè)地址就是它要表示的值(含義),但因?yàn)樗奶厥庑裕运徽加每臻g,只能采用取地址的方式獲取它代表的值。

通過(guò)這些內(nèi)置變量,原本我們計(jì)算 Code + RO-data + RW-Data 的值就可以得到 bin 文件的大小,但當(dāng)你查看 bin 文件大小之后,你會(huì)發(fā)現(xiàn) bin 文件小于該值,這是怎么回事?

通過(guò)分析 map 文件我們可以看到如下信息:

你會(huì)發(fā)現(xiàn),實(shí)際的bin文件包含的 RW 數(shù)據(jù)大小并不是 372,而是 56,也就是說(shuō),有一部分?jǐn)?shù)據(jù)并沒(méi)有被包含進(jìn) bin 文件用于拷貝(可能和 RW 的數(shù)據(jù)有部分初始值為 0 有關(guān)而被壓縮了)。

具體原因,魚(yú)鷹也沒(méi)搞懂,但是按照之前的變量來(lái)看,我們無(wú)法準(zhǔn)確獲得 bin 文件的大小,只能說(shuō)獲取到一個(gè)比 bin 文件大小稍大的數(shù)字。

原本以為魚(yú)鷹不可能獲得準(zhǔn)確的 bin 文件大小了,一個(gè)偶然的map文件查看,讓魚(yú)鷹看到了這么個(gè)變量:

好奇的魚(yú)鷹對(duì)它進(jìn)行了比較深入的研究,發(fā)現(xiàn)我需要的bin文件(程序)大小就隱藏在這里。

通過(guò)分析,魚(yú)鷹發(fā)現(xiàn)這個(gè)地址包含的8個(gè)數(shù)據(jù)含義如下:

通過(guò)圖中數(shù)據(jù),減去flash 的基地址,我們就可以獲取到 0x2FE8,即我們 bin 文件實(shí)際大小。

而另外兩個(gè)函數(shù)地址,原本魚(yú)鷹并不知道這些值是干什么用的,還是通過(guò)分析 map 文件,才最終確認(rèn)是兩個(gè)函數(shù)的地址,至于到底干什么用的,魚(yú)鷹就不是很清楚的,不過(guò)看名字也知道應(yīng)該和變量初始化有關(guān)系。

以上就是魚(yú)鷹分享的關(guān)于程序本身獲取自身大小的知識(shí)點(diǎn),至于你用這些數(shù)據(jù)干啥用那就是你的事情了。

原本魚(yú)鷹是準(zhǔn)備獲取到bin的大小后通過(guò)指定地址的方式在bin文件最后放一些數(shù)據(jù)的,但是這就真的變成雞生蛋蛋生雞的問(wèn)題了,看來(lái)通過(guò)內(nèi)置變量的方式是不行了,不知道各位道友有沒(méi)有好的方法讓編譯器自動(dòng)在 bin 文件的后面添加想要的數(shù)據(jù)呢(非第三方工具)?

 

責(zé)任編輯:武曉燕 來(lái)源: 魚(yú)鷹談單片機(jī)
相關(guān)推薦

2018-08-23 05:07:36

神經(jīng)架構(gòu)深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)

2010-04-30 16:08:20

Unix內(nèi)核

2020-10-19 14:05:50

芯片芯片人才芯片行業(yè)

2025-01-16 08:50:33

2020-10-26 11:33:45

編程語(yǔ)言編譯器軟件

2013-07-22 10:35:32

用戶需求技術(shù)創(chuàng)新產(chǎn)品

2016-11-02 00:22:13

數(shù)字化改造數(shù)字化

2019-11-26 09:21:49

區(qū)塊鏈比特幣虛擬貨幣

2012-06-18 15:21:38

Facebook競(jìng)價(jià)廣告

2018-09-27 10:26:12

物聯(lián)網(wǎng)

2018-10-17 09:25:22

2020-04-21 15:54:07

戴爾

2022-04-07 09:29:04

文件系統(tǒng)硬盤操作系統(tǒng)

2019-11-07 22:00:22

程序員代碼規(guī)范

2012-08-07 09:29:09

程序員編程

2019-09-29 10:45:46

C語(yǔ)言CPU編譯器

2013-04-12 02:01:55

微信公眾平臺(tái)接口開(kāi)發(fā)

2021-10-01 00:02:54

CHAR VARCHARMYSQL

2025-10-27 05:00:00

C語(yǔ)言CPUUnix
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

精品国产老师黑色丝袜高跟鞋| 91精品午夜视频| 国产精品成人免费电影| 色视频www在线播放| 在线欧美不卡| 亚洲视频在线观看网站| 成人福利影院| 中文一区在线| 欧美极品美女电影一区| av成人手机在线| 久久人人超碰精品| 国产一区免费在线| 欧美久久一区二区三区| 欧美男同性恋视频网站| 乱子伦视频在线看| 亚洲免费影视| 欧美疯狂xxxx大交乱88av| 精品写真视频在线观看| 热久久美女精品天天吊色| 欧美1234区| 亚洲精品国产精品乱码不99| 一区二区三区av| 羞羞答答成人影院www| xvideos亚洲人网站| 91在线看黄| 亚洲美女免费在线| 2022中文字幕| 亚洲精品影视| 国产精品久久久久久中文字| 91tv亚洲精品香蕉国产一区| 欧美精品 国产精品| 国精产品999国精产品官网| 亚洲主播在线| 国产精品爽黄69| 看亚洲a级一级毛片| 欧美精品一区二区三区久久久| 一区二区三区视频国产日韩| 国产日韩欧美麻豆| 成人在线免费高清视频| 欧美亚洲一区| 风间由美一区二区三区| 国产中文精品久高清在线不| 中文字幕精品www乱入免费视频| 素人av在线| 欧美日韩免费看| 亚洲女成人图区| 北条麻妃高清一区| 久久最新网址| 久久久久久九九九| 国产一区二区三区免费在线 | jizz内谢中国亚洲jizz| 色香色香欲天天天影视综合网| www亚洲天堂| 国产欧美精品一区二区三区四区| 成人免费性视频| 国产在线精品一区在线观看麻豆| 欧美三日本三级少妇三99| 亚洲婷婷在线| 国产精品一区视频| 99国产精品免费视频观看| 国产91九色视频| 偷拍一区二区| 奇米4444一区二区三区| 凹凸av导航大全精品| 亚洲色图18p| 香蕉成人影院| 中文字幕在线日韩| 欧美亚洲福利| 欧美日本啪啪无遮挡网站| 日本在线视频一区二区| 中文字幕精品久久久久| 日韩国产欧美区| 自拍偷拍第1页| 亚洲一区av在线| 制服丝袜影音| 亚洲视频一二三区| 女人黄色片免费| 色悠久久久久综合欧美99| 精品无人乱码| 日韩女优av电影| 欧美日韩123区| 久久久国产精品x99av | 亚洲综合网站| 久久全国免费视频| 少妇精品导航| 久久99精品久久久久久青青日本 | 日本黄色三级大片| 亚洲综合一区二区三区| 91短视频版在线观看www免费| 精品黑人一区二区三区久久| 91国产精品| 91精品久久久久久久久久久久久| 欧美一级一区| 日韩av一二三四| 欧美性猛交xxxx乱大交退制版| 中国字幕a在线看韩国电影| 中文字幕人成乱码在线观看| 97人人做人人爱| 亚洲一区二区三区高清| 国产精品入口芒果| 粉嫩av一区二区三区免费野| 中文字幕资源网在线观看免费| 欧美中文字幕在线视频| 日本欧美一区二区| 91av影院| 亚洲女与黑人做爰| 精品国产18久久久久久洗澡| 亚洲精品日韩成人| 亚洲人成网站影音先锋播放| 91黑丝在线| 亚洲黄色天堂| 欧美牲交a欧美牲交| 欧美视频中文在线看| 国精产品一区二区三区有限公司| 国产成人精品免高潮费视频| 国产又黄又大久久| 黄视频在线观看免费| 久久亚洲精品国产亚洲老地址| 国产精品va| 国产淫片av片久久久久久| 精品1区2区3区| 米奇精品关键词| 国产a级黄色大片| 日本高清免费不卡视频| 粉嫩久久久久久久极品| 亚洲日本精品| 一本一道久久a久久精品| 国产精品久久久久av蜜臀| 一区二区三区精品国产| 岛国av在线不卡| 国产主播性色av福利精品一区| 中文字幕中文字幕在线中心一区| 粉嫩老牛aⅴ一区二区三区| 一区二区日韩| 免费的一级黄色片| 欧美一区二区三区四区在线观看| 免费欧美激情| 成人在线观看黄| 亚洲欧美激情四射在线日| 二区视频在线| 欧美日韩另类综合| 91精品欧美福利在线观看| 青青操综合网| 香蕉成人av| 一本到av在线| 红桃一区二区三区| 超级碰碰久久| 亚洲午夜国产成人av电影男同| 不卡区在线中文字幕| 亚洲成a人片77777在线播放| 999精品视频在线| 国产视频亚洲精品| 久久天天做天天爱综合色| 亚洲在线观看| 五月花成人网| 日韩高清专区| 91精品国产综合久久男男| 精品捆绑美女sm三区| 欧美色中文字幕| 亚洲一区二区三区四区的| 老司机精品视频在线| 永久免费av在线| 欧美性片在线观看| 毛片免费在线播放| 国产经品一区二区| 亚洲成年人影院在线| 国产激情偷乱视频一区二区三区| 人与动性xxxxx免费视频| 欧美一区二区三区免费视| 欧美日韩一区二区三区在线| 色婷婷激情一区二区三区| 亚洲综合视频在线| 日本免费在线视频不卡一不卡二| 欧美日韩黄色| 午夜男人视频在线观看| 成人在线播放av| 91精品国产美女浴室洗澡无遮挡| 亚洲精品久久久久久久久久久久久 | 免费人成在线观看视频播放| 国产精品久久久久久亚洲调教 | 国产999精品久久| 欧美黄污视频| 日韩精品乱码免费| 秋霞在线午夜| 中国一级大黄大黄大色毛片| 一区二区三区四区在线观看视频| 丰满白嫩尤物一区二区| 激情久久免费视频| 一级片视频免费观看| 国产欧美va欧美va香蕉在| 欧美色综合久久| 国产高清成人在线| 中文在线综合| 亚洲综合色视频在线观看| 久久99精品久久久久久水蜜桃| 亚洲精品一线二线三线无人区| 国产一区二区三区观看| 97超碰资源| 调教视频vk| 国产精品91久久久久久|