keil中的存储模式

存储模式
  存储模式决定了默认的存储器类型此存储器类型将应用于函数参数局部变量和定义时未包含存储器类型的变量你可以在命令行用SMALL COMPACT和LARGE参数定义存储模式,定义变量时使用存储器类型显式定义将屏蔽默认存储器类型。

小(SMALL)模式
  所有变量都默认在8051的内部数据存储器中。这和用data显式定义变量起到相同的作用。在此模式下,变量访问是非常快速的,然而所有数据对象,包括堆栈都必须放在内部RAM中。堆栈空间面临溢出因为堆栈所占用多少空间依赖于各个子程序的调用嵌套深度。在典型应用中如果具有代码分段功能的BL51连接/定位器被配置成覆盖内部数据存储器中的变量时,此SMALL模式是最好的选择
 
紧凑 COMPACT 模式
  此模式中,所有变量都默认在8051的外部数据存储器的一页中地址的高字节往往通过Port 2输出 ,其值必须由你在启动代码中设置编译器不会为你设置这和用pdata显式定义变量起到相同的作用。此模式最多只能提供256字节的变量这种限制来自于间接寻址所使用的R0,R1 MOVX @R0/R1。 这种模式不如SMALL模式高效所以变量的访问不够快,不过它比LARGE模式要快。

大 LARGE 模式
  在大模式下,所有的变量都默认在外部存储器中(xdata )。这和用xdata显式定义变量起到相同的作用。数据指针DPTR 用来寻址。通过DPTR进行存储器的访问的效率很低,特别是在对一个大于一个字节的变量进行操作时尤为明显 ,此数据访问类型比SMALL和COMPACT模式需要更多的代码。

时间: 2024-11-09 14:45:39

keil中的存储模式的相关文章

Redis-序列化和存储模式

Redis中数据存储模式有2种:cache-only,persistence; ? cache-only即只做为"缓存"服务,不持久数据,数据在服务终止后将消失,此模式下也将不存在"数据恢复"的手段,是一种安全性低/效率高/容易扩展的方式: ? persistence即为内存中的数据持久备份到磁盘文件,在服务重启后可以恢复,此模式下数据相对安全.对于persistence持久化存储,Redis提供了两种持久化方法: ? Redis DataBase(简称RDB) r

存储中的大端模式和小端模式详解

什么是大端,什么是小端: 所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中: 所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中. 为什么会有大小端: 为什么会有大小端模式之分呢?这是因为在计算机存储系统中,我们是以字节为单位进行管理的,每个内存中的地址单元都对应着一个字节,一个字节为8bit.但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器),另外,对于位数大

.net的session详解 存储模式 存到数据库中 使用范围与大小限制 生命周期

Session又称为会话状态,是Web系统中最常用的状态,用于维护和当前浏览器实例相关的一些信息.举个例子来说,我们可以把已登录用户的用户名放在Session中,这样就能通过判断Session中的某个Key来判断用户是否登录,如果登录的话用户名又是多少. 我们知 道,Session对于每一个客户端(或者说浏览器实例)是"人手一份",用户首次与Web服务器建 立连接的时候,服务器会给用户分发一个 SessionID作为标识.SessionID是一个由24个字符组成的随机字符串.用户每次提

KEIL中三种编译模式以及对变量空间的影响

三条编译模式控制命令:SMALL,COMPACT,LARGE,它们对变量存储器空间的影响如下. SMALL:所有变量都被定义在8051单片机的片内RAM中,对这种变量的访问速度最快.另外,堆栈也必须位于片内RAM中,而堆栈的长度是很重要的,实际栈长取决与不同函数的嵌套深度.采用SMALL编译模式与定义变量时指定data存储器类型具有相同效果. COMPACT:所有变量被定义在分页寻址的片外XRAM中,每一页片外XRAM的长度为256字节:即所有变量存储在片外XRAM的某一页中.这时对变量的访问是

【总结】大端、小端存储模式的那点事

----------------------------------------------------------------------------------------------------- 大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放: 小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权

Keil中Memory Model和Code Rom Size说明

源:Keil中Memory Model和Code Rom Size说明 C51中定义变量时如果省略存储器类型,Keil C51编译系统则会按编译模式SMALL.COMPACT和LARGE所规定的默认存储器类型去指定变量的存储区域,无论什么存储模式都可以声明变量在任何的8051存储区范围i,但是把最常用的命令如循环计数器和队列索引放在内部数据区可以显著地提高系统性能.以下介绍一下Keil编译选项Target中的Memory Model和Code Rom Size的设置. Memory Model(

php中的组合模式

刚看完了<深入php面向对象.模式与实践>一书中组合模式这块内容,为了加深理解和记忆,所以着手写了这篇博客. 为方便后续理解,此处先引入两个概念,局部对象和组合对象. 局部对象:无法将其他对象组合到自身内部属性上的对象.即不能组合其他对象的对象. 组合对象:可以将其他对象组合到自身内部属性上的对象.即可以组合其他对象的对象. 注:将对象A的某个属性中存储着对象B对象的引用,则表示A与B有组合关系,其中A将B组合到了自身内部. 首先我们通过给出下面的业务需求,来引入组合模式: 业务部门想要开发一

External Configuration Store Pattern 外部配置存储模式

Move configuration information out of the application deployment package to a centralized location. This pattern can provide opportunities for easier management and control of configuration data, and for sharing configuration data across applications

keil中的串口调试:

keil中串口的虚拟调试信息在通过View-serial windows-#usart1/2/3/4/debug(printf)可以看到.当然也可以通过虚拟串口VSPD+串口调试助手在外部实现,方法如下: 虚拟 串口使用:步骤 1 下载虚拟串口软件,虚拟2个连接的串口COMA/COMB,这两个串口与PC机的真实物理串口没关系.两边的设置相同 2 打开串口通讯助手,将A分配给串口通讯助手,则B就分配给下面的COMx 2 在MDK中输入命令行或者将下面的做成debug.ini文件加载 MODE CO