(1)int变量
在51单片机中占2个字节;在ARM处理器中占4个字节。
(2)结构体对齐
在51单片机中按照一个字节对齐;在ARM中按照结构体默认对齐规则对齐。
(3)字节在内存的排列顺序
在51单片机中是大端;在ARM中,大多数是小端,部分可以大小端选择。
大端堆栈和小端堆栈的区别:
大端堆栈往上生长,小端堆栈往下生长;
大端初始化的SP往往在地址低端,小端初始化的SP往往在地址高端。
(4)局部变量
在51单片机中存放在数据段中;在ARM中存放于堆栈中;
(5)指令长度
在51单片机中指令长度一般是1~3个字节;在ARM处理器中指令长度一般是一个字(32位)。
(6)编址方法
在51单片机中是空间独立编址;在ARM中是空间统一编址。
(7)ARM中没有bool变量;在51单片机中可采用bit变量
使用typedef enum(false,true)bool;
赋初值的ROM变量定位方法:
ARM方法:
const u8 bootsoftver __at(0x8001000)=BOOT32_SOFTVER;
MCS51方法:
首先,建立一个bootver.c文件:
unsigned char code
version=BOOTVERSION; //BOOT固件版本
然后,在BL51 Locate--?CO?BOOTVER(0x0FD00)
(8)主函数和中断调用同一函数
在51单片机中显示告警信息WARNING 15(MULTIPLE CALL TO SEGMENT);函数不可重入
在ARM中编译后不显示告警;函数可重入