单片机的数据空间和程序空间

单片机的数据空间和程序空间,第1张

AT89C52的程序空间是8KB是确认无疑的,但指的是存放纯二进制的机器码,就是二进制数。而KeilC编译的HEX代码文件并不是纯二进制数,是以ASCII码格式存放的文件,而且其中还有一些编译信息,如地址、校验和等。所以,不能看HEX文件的大小来确定下载到单片机内的真正的程序空间大小,也就是说HEX文件的大小并不是真正下载的单片机的程序大小。而下载到单片机的代码空间大小要看Keilc编译时给出的代码数的提示,才是真正要下载到单片机内的代码空间。举个例子,下图是一个程序编译后的提示,真正的二进制代码是337个字节,而HEX文件却是1KB。这里还有一个误区,你看到的HEX文件的大小是操作系统给出的大小吧,它是取整KB的,就是说HEX文件不足1KB时,也显示是1KB。再明确一点说吧,假如编译后的代码是750418,用纯二进制数(即BIN格式,有些汇编程序的编译器输出的就是BIN格式)的代码保存就是3个字节,而用HEX格式保存就是6个字节,因为要用6个ASCII码来表示。这来算来,HEX文件大小是BIN文件的二倍,加上一些地址信息,是大于二倍的。好,回到你的问题来,你的HEX文件是19KB,你看一下编译后的代码大小提示,肯定是不会超过8KB的,否则编译时肯定会报错的。

你好我来回答这个问题。

S7-200 PLC的存储器空间大致分为三个空间,即程序空间、数据空间和参数空间。1.程序空间。该空间主要用于存放用户应用程序,程序空间容量在不同的CPU中是不同的。另外CPU中的RAM区与内置EEPROM上都有程序存储器,但它们互为映像,且空间大小一样。2.数据空间。该空间的主要部分用于存放工作数据称为数据存储器,另外有一部分作寄存器使用称为数据对象。变量存储器(V)是保存程序执行过程中控制逻辑操作的中间结果,所有的V存储器都可以存储在永久存储器区内,其内容可在与EEPROM或编程设备双向传送。

算法的空间复杂性越高,算法所需的存储空间越多。

空间复杂性即空间复杂度,是指对一个算法在运行过程中临时占用存储空间大小的量度,用o()来表示。

个算法的空间复杂度(SpaceComplexity)S(n)定义为该算法所耗费的存储空间,它也是问题规模n的函数。渐近空间复杂度也常常简称为空间复杂度。

空间复杂性的组成:

程序所需要的空间主要由以下部分构成:

1、指令空间(instruction space)指令空间是指用来存储经过编译之后的程序指令所需的空间。

2、数据空间(data space)数据空间是指用来存储所有常量和所有变量值所需的空间。数据空间由两个部分构成:存储常量和简单变量所需要的空间;存储复合变量所需要的空间,这一类空间包括数据结构所需的空间及动态分配的空间。

3、环境栈空间(environment stack space)环境栈用来保存函数调用返回时恢复运行所需要的信息。例如,如果函数fun1调用了函数fun2,那么至少必须保存fun2结束时fun1将要继续执行的指令的地址。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/61541.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-02-27
下一篇2023-02-27

发表评论

登录后才能评论

评论列表(0条)

    保存