Keil中存储器类型和存储器模型

存储器类型

C51编译器支持8051及其派生器件结构并提供对8051所有存储区的访问。每个变量可以明确地分配到指定存储空间。对内部数据存储器的访问比对外部数据的访问快许多。因此,应当将频繁使用的变量放在内部存储器,而把较少使用的变量放在外部存储器中。
变量的定义包括了存储器类型的指定,可以指定变量存放的位置。

存储器类型描述
code程序存储器(64K字节);通过操作码MOVC @A+DPTR进行访问
data直接寻址内部数据存储器;对变量的最快访问(128字节)
idata间接寻址内部数据存储器;访问整个内部地址空间(256字节)
bdata位寻址内部数据存储器;允许位和字节混合寻址(16字节)
xdata外部数据存储器(64K字节);通过MOVX @DPTR 访问
pdata页外部数据存储器(256字节);通过MOVX @Rn访问

存储器模型

存储器模型决定用于函数自变量、自动变量和没有明确存储类型的变量的默认存储器类型。在命令行中使用SMALL、COMPACTLARGE控制命令指定存储器类型。

SMALL

在该模型中,所有变量都默认位于8051内部数据存储器。这和使用data指定存储器类型的方式一样。此模型对于变量访问的效率很高,弹所有的数据对象和堆栈必须适合内部RAM。堆栈的大小很关键。因为使用的堆栈空间是由不同函数嵌套的深度决定的。通常,如果BL51连接器/定位器都将变量都配置在内部数据存储器内,SMALL模型是最佳选择。

COMPACT

使用COMPACT模型,所有变量都默认在外部数据存储器的一页内。这和使用pdata指定存储器类型一样。该存储器类型适用于变量不超过256个字节。此限制是由寻址方式所决定的。该存储器类型的效率低于SMALL模型。对变量的访问速度要慢一些,但比LARGE模型快。地址的高字节通常通过口2设置。编译器没有设置该口。

LARGE

在LARGE模型中,所有变量都默认位于外部数据存储器。这个使用xdata指定存储器类型一样。使用数据指针(DPTR)进行寻址。通过数据指针访问外部数据存储器的效率较低。特别是当变量为2个字节或更多字节时,该模型的数据访问比SMALL和COMPACT产生更多的代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值