您的位置 首页 系统

ARM与51编写程序的差异

测试环境:KEIL(1)int变量在51占2个字节;在ARM占4个字节(2)结构体对齐在51是按照一个字节对齐;在ARM是按结构体默认对齐规则对

测验环境:KEIL

(1) int变量 在51 占2个字节;在ARM占4个字节

(2)结构体对齐 在51是依照一个字节对齐; 在ARM是按结构体默许对齐规矩对齐

(3)字节在内存的摆放次序 在51是大端 ;在ARM大多数是小端,但有的能够巨细端挑选。

在大端存储格局中,字数据的高字节存储在低地址中,而字数据的低字节则寄存在高地址中

在小端存储格局中,低地址中寄存的是字数据的低字节,高地址寄存的是字数据的高字节

(大端,小端的仓库方向不同,大端是向上成长,小端是向下成长)所以大端初始化的SP往往是地址低端,而小端初始化的SP往往是地址高端

(4)函数体中的局部变量,在C51中寄存于一个可掩盖的(数据)段中的,而ARM是寄存于仓库中的。这样在(比方PC,比方ARM),函数重入的问题一般不是要特别注意的问题.只需你没有运用static变量,或许指向static变量的指针,一般情况下,ARM中函数自然而然地便是可重入的.但C51不一样,假如你不特别规划你的函数,它便是不行重入的.

(4) ARM的指令长度(或指针)一个字(32位),单片机指令长度(或指针)不定(1-3字节)

(5) ARM的空间一致编址,单片机的空间独立编址

(6) ARM没有bool变量,单片机可采用bit变量

ARM中可采用 typedef enum(false,true) bool;

赋初值的ROM变量定位办法:

ARM办法:
const u8 bootsoftver __at (0x8001000) =BOOT32_SOFTVER;

MC51办法:
1.新建bootver.c文件
unsigned char code version=BOOTVERSION; //BOOT 固件版别

2.在BL51 Locate — ?CO?BOOTVER(0xFD00)

主程序和中止调用同一函数

ARM编译后不显现告警;函数可重入

C51显现告警信息WARNING 15 (MULTIPLE CALL TO SEGMENT);函数不行重入

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/xitong/276777.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部