存储模式
存储模式决定了默认的存储器类型此存储器类型将应用于函数参数局部变量和定义时未包含存储器类型的变量你可以在命令行用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模式需要更多的代码。