2012年11月17日
摘要: BSS(Block Started by Symbol)这个词最初是UA-SAP汇编器(United Aircraft Symbolic Assembly Program)中的一个伪指令,用于为符号预留一块内存空间。一般C语言的编译后执行语句都编译成机器代码,保存在.text段;已初始化的全局变量和静态变量都保存在. data段;未初始化的全局变量和静态变量一般放在一个叫."bss"的段里。我们知道未初始化的全局变量和局部静态变量默认值都为0,本来它们也可以被放在.data段的,但是因为它们都是0,所以为它们在.data段分配空间并且存放数据0是没有必要的。程序运行的时候它 阅读全文
posted @ 2012-11-17 21:51 WithYouTh 阅读(1135) 评论(0) 推荐(0) 编辑
摘要: 一.预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,全... 阅读全文
posted @ 2012-11-17 20:06 WithYouTh 阅读(161) 评论(0) 推荐(0) 编辑
摘要: BSS段:BSS段(bsssegment)通常是指用来存放程序中未初始化的全局变量和静态变量的一块内存区域。BSS是英文BlockStartedbySymbol的简称。BSS段属于静态内存分配。 数据段:数据段(datasegment)通常是指用来存放程序中已初始化的全局变量和静态变量的一块内存区域。数据段属于静态内存分配。 代码段:代码段(codesegment/textseg... 阅读全文
posted @ 2012-11-17 18:14 WithYouTh 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 惨痛教训: 假设在test.h中定义了一个static bool g_test=false; 若test1.c和test2.c都包含test.h,则test1.c和test2.c分别生成两份g_test,在test1.c 中置g_test=true,而test2.c中仍然为false并未改变!shit!! 一、c程序存储空间布局 C程序一直由下列部分组成: 1)正文段——CP... 阅读全文
posted @ 2012-11-17 17:16 WithYouTh 阅读(265) 评论(0) 推荐(0) 编辑
摘要: Keil C51程序设计中几种精确延时方法 摘要 实际的单片机应用系统开发过程中,由于程序功能的需要,经常编写各种延时程序,延时时间从数微秒到数秒不等,对于许多C51开发者特别是初学者编制非常精确的延时程序有一定难度。本文从实际应用出发,讨论几种实用的编制精确延时程序和计算程序执行时间的方法,并给出各种方法使用的详细步骤,以便读者能够很好地掌握理解。 关键词 Keil C51 精确延时 程... 阅读全文
posted @ 2012-11-17 16:38 WithYouTh 阅读(951) 评论(0) 推荐(1) 编辑
摘要: 在keil C51中,直接调用库函数: #include<intrins.h> // 声明了void _nop_(void); _nop_(); // 产生一条NOP指令 作用:对于延时很短的,要求在us级的,采用“_nop_”函数,这个函数相当汇编NOP指令,延时几微秒。 NOP指令为单周期指令,可由晶振频率算出延... 阅读全文
posted @ 2012-11-17 16:16 WithYouTh 阅读(2031) 评论(0) 推荐(0) 编辑