Keil中Memory Model和Code Rom Size说明
来源:互联网 发布:qq堂for mac 编辑:程序博客网 时间:2024/05/16 01:37
Keil中Memory Model和Code Rom Size说明
C51中定义变量时如果省略存储器类型,Keil C51编译系统则会按编译模式SMALL、COMPACT和LARGE所规定的默认存储器类型去指定变量的存储区域,无论什么存储模式都可以声明变量在任何的8051存储区范围i,但是把最常用的命令如循环计数器和队列索引放在内部数据区可以显著地提高系统性能。以下介绍一下Keil编译选项Target中的Memory Model和Code Rom Size的设置。
Memory Model(存储器模式)
SMALL模式
在本模式中所有的变量在缺省的情况下位于8051系统的内部数据区(这和用data存储类型标识符明确声明的一样,因此对这种变量的访问数据最快),在本模式中,变量访问非常有效,然而所有的东西包括堆栈必须放在内部RAM中,堆栈大小是不确定的,它取决于函数嵌套的深度。典型的,如果连接/定位器配置为内部数据区变量可覆盖,SMALL模式是最好的模式,但是SMALL模式的地址空间受限,在写小型的应用程序时,变量和数据放在Data内部数据存储器中是很好的,因为访问速度快,但在较大的程序中Data区最好只存放小的变量、数据或常用的变量(如循环计数、数据索引),而大的数据则放在别的存储区域,否则Data区就容易溢出。
COMPACT模式
COMPACT模式把变量都定位在MCS-51系统的外部数据存储器中,外部数据存储段可有最多256字节(一页 ),这是对变量的访问是通过寄存器间接寻址(MOVX @Ri)进行的。采用这种编译模式时,变量的高8位地址由P2口确定,因此,在采用这种模式的同时,必须适当改变启动程序STARTUP.A51中的参数PDATASTART和PDATALEN,用L51进行连接时还必须采用连接控制命令PDATA来对P2口地址进行定位,这样才能确保P2口为所需的高8位地址。
LARGE模式
LARGE模式中,所有函数和过程的变量以及局部变量数据段都被定义在51系统的外部数据存储器中,外部数据存储器最可可有64K,这要求用DPTR数据指针来间接地访问数据,因此,这种访问效率并不高,尤其是对2个或多个字节的变量,用这种模式访问数据程序的代码将会很大。
Code Rom Size(设置ROM空间的使用)
SMALL模式:只用低于2K的程序空间
COMPACT模式:单个函数的代码量不能超过2K,整个程序可以使用64K的程序空间
LARGE模式:可用全部64K空间
- Keil中Memory Model和Code Rom Size说明
- Keil Memory Model
- KEIL Memory Model
- keil C51的Memory Model 说明[三种Model的选择对编译的影响]
- keil C51的Memory Model 说明[三种Model的选择对编译的影响]
- keil中code和const的区别
- flash 与CODE memory ,ROM与Xdata
- Keil中 Program Size: Code RO-data RW-data ZI-data 所代表的意思
- Keil中 Program Size: Code RO-data RW-data ZI-data 所代表的意思
- Keil中 Program Size: Code RO-data RW-data ZI-data 所代表的意思
- Keil中 Program Size: Code RO-data RW-data ZI-data解析
- Keil中 Program Size: Code RO-data RW-data ZI-data 所代表的意思
- Keil中 Program Size: Code RO-data RW-data ZI-data 所代表的意思
- Keil中 Program Size: Code RO-data RW-data ZI-data 所代表的意思
- Keil定义字符串数组到ROM中
- IAR和KEIL中以常量形式存储到ROM或FLASH的指定的位置
- Keil中 Program Size: Code RO-data RW-data ZI-data 所代表的意思 及.hex文件的含义
- 关于keil软件编译后的data xdata 和code的说明
- java swing 学习笔记一(画板Panel )
- 相关子查询 与非相关子查询
- ACE_Message_Block和ACE_Message_Queue问答
- 强大的KMP解释,不懂都难(有图有真相)
- Oracle EBS的基础架构技术
- Keil中Memory Model和Code Rom Size说明
- 鸡蛋饭
- java swing学习笔记二(画布Canvas)
- PC客户端与Android服务端的Socket同步通信(USB)
- Eclipse将java的工程转换为web工程
- IAR error: a declaration cannot have a label
- 动态链接库与静态链接库的区别
- 解析字符串
- hibernate中的Inverse作用