RO段、RW段和ZI段

Posted by gavinkwoe

一直以来对于体系中所描述的数据存在似是而非的理解,这段时间对其仔细了解了一番,发现了一些规律,理解了一些以前书本上有的但是不理解的东西,我想应该有不少人也有和我同样的困惑,因此将我的一些关于的理解写出来,希望能对大家有所帮助。
要了解需要首先了解以下知识:
程序的组成
此处所说的“程序”是指在系统中正在执行的程序,而非保存在ROM中的bin映像(image)文件,这一点清注意区别。
一个程序包含3部分:
是程序中的指令和常量
是程序中的已初始化变量
是程序中的未初始化的变量
由以上3点说明可以理解为:
就是readonly,
就是read/write,
就是zero
映像文件的组成
所谓映像文件就是指烧录到ROM中的bin文件,也成为image文件。以下用Image文件来称呼它。
Image文件包含了数据。
之所以Image文件不包含数据,是因为数据都是0,没必要包含,只要程序运行之前将数据所在的区域一律清零即可。包含进去反而浪费存储空间。
Q:为什么Image中必须包含
A:因为中的指令和常量以及中初始化过的变量是不能像那样“无中生有”的。
程序的执行过程
从以上两点可以知道,烧录到ROM中的image文件与实际运行时的程序之间并不是完全一样的。因此就有必要了解程序是如何从ROM中的image到达实际运行状态的。
实际上,中的指令至少应该有这样的功能:
1. 将从ROM中搬到RAM中,因为是变量,变量不能存在ROM中。
2. 将所在的RAM区域全部清零,因为区域并不在Image中,所以需要程序根据编译器给出的地址及大小来将相应得RAM区域清零。中也是变量,同理:变量不能存在ROM中
在程序运行的最初阶段,中的指令完成了这两项工作后C程序才能正常访问变量。否则只能运行不含变量的代码。
说了上面的可能还是有些迷糊,到底是什么,下面我将给出几个例子,最直观的来说明在C中是什么意思。
1;
看下面两段程序,他们之间差了一条语句,这条语句就是声明一个字符常量。因此按照我们之前说的,他们之间应该只会在数据中相差一个字节(字符常量为1字节)。
Prog1:
#include <stdio.h>
void main(void)
{
;
}
Prog2:
#include <stdio.h>
const char a = 5;
void main(void)
{
;
}
Prog1编译出来后的信息如下:
================================================================================
Code Data Data Data
948 60 0 96 0 Grand Totals
================================================================================
Total Size(Code + Data) 1008 ( 0.98kB)
Total Size( Data + Data) 96 ( 0.09kB)
Total ROM Size(Code + Data + Data) 1008 ( 0.98kB)
================================================================================
Prog2编译出来后的信息如下:
================================================================================
Code Data Data Data
948 61 0 96 0 Grand Totals
================================================================================
Total Size(Code + Data) 1009 ( 0.99kB)
Total Size( Data + Data) 96 ( 0.09kB)
Total ROM Size(Code + Data + Data) 1009 ( 0.99kB)
================================================================================
以上两个程序编译出来后的信息可以看出:
Prog1和Prog2的包含了Code和 Data两类数据。他们的唯一区别就是Prog2的 Data比Prog1多了1个字节。这正和之前的推测一致。
如果增加的是一条指令而不是一个常量,则结果应该是Code数据大小有差别。
2;
同样再看两个程序,他们之间只相差一个“已初始化的变量”,按照之前所讲的,已初始化的变量应该是算在中的,所以两个程序之间应该是大小有区别。
Prog3:
#include <stdio.h>
void main(void)
{
;
}
Prog4:
#include <stdio.h>
char a = 5;
void main(void)
{
;
}
Prog3编译出来后的信息如下:
================================================================================
Code Data Data Data
948 60 0 96 0 Grand Totals
================================================================================
Total Size(Code + Data) 1008 ( 0.98kB)
Total Size( Data + Data) 96 ( 0.09kB)
Total ROM Size(Code + Data + Data) 1008 ( 0.98kB)
================================================================================
Prog4编译出来后的信息如下:
================================================================================
Code Data Data Data
948 60 1 96 0 Grand Totals
================================================================================
Total Size(Code + Data) 1008 ( 0.98kB)
Total Size( Data + Data) 97 ( 0.09kB)
Total ROM Size(Code + Data + Data) 1009 ( 0.99kB)
================================================================================
可以看出Prog3和Prog4之间确实只有 Data之间相差了1个字节,这个字节正是被初始化过的一个字符型变量“a”所引起的。
3;
再看两个程序,他们之间的差别是一个未初始化的变量“a”,从之前的了解中,应该可以推测,这两个程序之间应该只有大小有差别。
Prog3:
#include <stdio.h>
void main(void)
{
;
}
Prog4:
#include <stdio.h>
char a;
void main(void)
{
;
}
Prog3编译出来后的信息如下:
================================================================================
Code Data Data Data
948 60 0 96 0 Grand Totals
================================================================================
Total Size(Code + Data) 1008 ( 0.98kB)
Total Size( Data + Data) 96 ( 0.09kB)
Total ROM Size(Code + Data + Data) 1008 ( 0.98kB)
================================================================================
Prog4编译出来后的信息如下:
================================================================================
Code Data Data Data
948 60 0 97 0 Grand Totals
================================================================================
Total Size(Code + Data) 1008 ( 0.98kB)
Total Size( Data + Data) 97 ( 0.09kB)
Total ROM Size(Code + Data + Data) 1008 ( 0.98kB)
================================================================================
编译的结果完全符合推测,只有数据相差了1个字节。这个字节正是未初始化的一个字符型变量“a”所引起的。
注意:如果一个变量被初始化为0,则该变量的处理方法与未初始化华变量一样放在区域。
即: C程序中,所有的未初始化变量都会被自动初始化为0。
总结:
1; C中的指令以及常量被编译后是类型数据。
2; C中的未被初始化或初始化为0的变量编译后是类型数据。
3; C中的已被初始化成非0值的变量编译后市类型数据。
附:
程序的编译命令(假定C程序名为tst.c):
armcc -c -o tst.o tst.c
armlink -noremove -elf -nodebug -info totals -info sizes -map -list aa.map -o tst.elf tst.o
编译后的信息就在aa.map文件中。
ROM主要指:NAND Flash,Nor Flash
RAM主要指:PSRAM,SDRAM,SRAM,DDRAM


地产商这样广告:(总有一款适合你!)

Posted by dengwei

  偏远地段————远离闹市喧嚣,尽享静谧人生
  郊区乡镇————回归自然,享受田园风光
  紧邻闹市————坐拥城市繁华
  挨着臭水沟———绝版水岸名邸,上风上水
  挖个水池子———东方威尼斯,演绎浪漫风情
  地势高—————视野开阔,俯瞰全城
  地势低洼————私属领地,冬暖夏凉
  楼顶是圆的———巴洛克风格
  楼顶是尖的———哥特式风格
  户型很烂————个性化户型设计,紧跟时尚潮流
  楼间距小————邻里亲近,和谐温馨
  边上是荒草地——超大绿化,满眼绿意
  边上有家银行——紧邻中央商务区
  边上有个居委会—中心政务区核心地标
  边上有家学校——浓厚人文学术氛围
  边上有家诊所——拥抱健康,安享惬意
  边上有家小卖店—便利生活触手可及
  边上有个垃圾站—人性化环境管理
  边上有火车道——交通便利,四通八达
  边上什么也没有—简约生活,闲适安逸


slideshare 服务中断

Posted by dengwei

在北京,此网站无法访问。

Something went wrong!

This is probably a temporary error.

504 Error


南山滑雪场

Posted by dengwei

南山滑雪场的网站做得真不错,所有滑雪场网站里做得最 web2.0


Zend Framework 1.7.0 released

Posted by dengwei

此次更新包含很多的组件和特性,如果 dojo, Zend_Service_twitter, Zend_Search_Lucene 组件对 Open Office Document 的支持, Zend_ProgressBar, I18N 的改进和大量的 bug fixes


竟然看到葫芦娃蛇精的真人版美女 (多图为证)

Posted by dengwei

m.jpg

8.jpg
7.jpg6.jpg5.jpg4.jpg
3.jpg
2.jpg

1.jpg


现场抓拍爬铁栅栏 结果被爆了菊花

Posted by dengwei


netease sucks

Posted by dengwei

看网志年会还要求我用 ie browser 来看。。。。。。


解决 Zend Studio for Eclipse 6.x.x 启动时的 bug

Posted by dengwei

在 Zend Studio for Eclipse 时会有显示 Building Project 的错误,解决的办法很简单,在 preference 里的 General 中设置 Startup and Shutdown ,把 Advanced Debugger UI Plug-in 和 PDT Daemon Plug-in 的对号去掉既可。


一个光棍的呐喊

Posted by dengwei

汽车渴望公路,
    花草渴望雨露,
    太监迫切渴望著雄性激素。
    灵魂渴望超度,
    心灵渴望归宿,
    而我则迫切渴望著有个媳妇。
    众里寻她千百度,
    踏平脚下路。
    蓦然回首细环顾,
    大婶大娘无数。
    偶有美女光顾,
    还是有夫之妇,
    余下大多数,
    基本不堪入目。
    时间犹如脱兔,
    匆匆不肯停步。
    转眼就把我拖到了该当爹妈的岁数。
    然而上天却挺可恶,
    对我不管不顾。
    把我培养的庸庸碌碌,
    难以获得少女的爱慕。
    我曾向月老求助,
    求他将我单身的生涯结束。
    而他给予我的眷顾,
    竟是接踵而至的恶女和怨妇。
    比起她们的飞扬跋扈,
    以及对我精神上的无情屠戮,
    我更愿意选择让步,
    甘心走向黄泉之路。
    无助,无助。
    其实我并非一无是处。
    我有很多的优点可以列举和陈述。
    但我不知道是什么缘故,
    我竟无法得到过别人的敬仰和拥护
    我的爱心彰明较著,
    最最热心于公益捐助。
    为了祖国福利和体育事业的长足进步,、
    我不知疲倦的奔波于体彩和福彩中心投注;
    为了向世人体现优越的社会主义制度,
    以及在党和国家的领导下我们小康的程度,
    我毅然决然的增加了喝酒的次数,
    终于练出了代表富足的啤酒肚;
    我还坚持为人民服务,用我最大的热情为别人提供帮助。
    为了让我这片心意落到实处,
    我硬是把不愿过去的大娘也搀过了马路……
    而我得到的赞扬却远远少于挨骂的次数。
    我不明白我的努力换来的为何只是别人的不屑一顾甚至是愤怒。
    是因为我过人的天赋,
    让他们相形见绌,
    还是我高尚的品格和气度,
    让他们产生了深深的嫉妒?
    我的优秀并没有让我自负,
    更没有因为自己的伟大而恃才傲物。
    本以为这样才能有女孩对我暗生情素,
    谁知我等到现在也还没有一点迹象和眉目。
    其实要把女人比做猎物,
    我则是一个迷茫的猎户。
    因为我实在是不懂狩猎的技术。
    该跟著群雄逐鹿,
    还是该继续著守株待兔,
    思考了很久也没有整理出一条清晰的思路。
    也许这便也成了我的桎梏,
    成了我无法得到爱情的又一大因素。
    或许曾经的某次时机被我奢侈的贻误,
    就造成了现在的万劫不复。
    咱们这个国度,
    人口资源丰富。
    但为何娶不到老婆的男人还是不计其数?
    是因为封建思想的束缚,
    打乱了男女的比例和数目,
    还是因为社会的退步,
    又重新开始了一夫多妻的制度?
    有时想想也他妈愤怒,
    你说凭啥大款就可以包养了N个情妇?
    难道只为著权利和财富,
    就可以不受道德的约束,
    并置我们光棍于不顾,
    抢占著资源无数?
    怪也怪女人们过于世故,
    对金钱和地位的趋之若鹜。
    只知道花园洋房和别墅,
    早把真情的概念颠覆。
    冲动时我真恨不得变成动物,
    哪怕只是头卖力的牲畜。
    听凭主人的吩咐,
    不用感受做人的无助。
    或者干脆来个移花接木,
    彻底的做个变性手术。
    跑到人群中滥竽充数,
    也好让同胞们多一条可以选择的出路。
    街上的婚介星罗棋布。
    我也曾幻想著他们能帮我打开销路。
    然而最终的结果是让我明白了什么叫认贼作父,
    并被婚托儿们榨干了我几年的收入。
    吃不著猪蹄儿能看看猪跑也算对我心灵创伤的平复。
    所以能看到美女的繁华地段成了我最爱的去处。
    每当看著她们迈著款款的猫步,
    在我的视线里出出入入,
    我总是能感受到久违了的心跳并顺便痛心一下她们的已为人妇。
    现实的打击让我鸡肠小肚。
    我最看不惯情侣们当众亲密过度。
    只要看到有人稍越雷池半步,
    我就会上前阻止并提醒他们病出口入。
    结果自然不必赘述,
    我经常会体验到肢体语言的丰富。
    尽管如此我也并没有减少对此事的关注,
    反而更觉得有必要加大宣传的攻势和力度。
    没有爱的倾注,
    我如涸辙之鲋。
    这样的生活确实很难让我安之若素。
    看著朋友们已为人父,
    小生活过的美满和睦,
    我又何尝不是深深的羡慕,
    并渴望著感情上的脱贫致富?
    都说男儿有泪不扑簌,
    但那绝对是未到伤心处。
    有谁知道泪水已经多少次模糊了我心灵的窗户?
    况且咱都是沧海一粟,
    凭啥我就不能在爱情的海岸登陆?
    只能一口一口的吃著干醋,
    被动的尽著晚婚晚育的义务!
    人生本来就短促,我又怎能就这样默默的虚度?
    为了尽快给自己找一个归宿,
    我决心不择手段的全力以赴。
    错误,错误。
    这种想法最终成了我难逃的劫数。
    没想到我一时的慌不择路,
    竟上演了那样惨绝人寰的一幕。
    那是我走投无路,
    勾引了有夫之妇。
    谁知道罪行败露,
    被人家当场抓住。
    只后悔不会武术,
    没能够杀出血路。
    无奈的任人摆布,
    惨遭了打击报复。
    他们恼羞成怒,
    打得义无反顾。
    片刀循环往复,
    板砖频频招呼。
    我浑身血流如注,
    俩腿还不住抽搐。
    走错那罪恶一步,
    差点就死不瞑目。
    恐怖,恐怖。、
    真庆幸我还能把命保住。
    那场我自导自演的前车之覆,
    带给了我贼深贼深的感触。
    往事历历在目,
    我此刻一一追溯。
    经历了苦痛挣扎后的觉悟,
    终于上升到了前所未有的高度。
    问世间情为何物,
    我算是大彻大悟。
    感情上的事儿看来还真不能过于盲目。
    是你的挡不住,
    不是你的留也留不住。
    别人的老婆就是再好也不能轻易接触。
    有道是皮之不存毛将焉附,
    我要是OVER了还上哪儿去找我的贤内助?
    更何况人生短促,
    还有很多东西值得我们珍惜和呵护。
    爱情的光环固然眩目,
    也毕竟不是生命的全部。
    岁月的痕痕无孔不入。
    无有爱情的皮囊苍老的更加迅速。
    看著我那用蒸汽熨斗都已无法熨平的面部,
    真不知还有谁肯向我将她的终身托付。
    等待著等待到行将就木,
    持续著持续到人生落幕。
    盼望吧盼望著解决光棍待遇的法规早日颁布,
    但愿啊但愿我首先踏入的能够是婚姻的坟墓。


« Previous Entries