打印
[开发工具]

最近搞版主申请?,请说下遇见过的51与STM编译器区别

[复制链接]
1615|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xlsbz|  楼主 | 2013-12-2 13:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xlsbz 于 2013-12-2 13:10 编辑

我已经知道两个

51的 unsignedint  是16bit
STM 的是32bit
------------------------
51在中断服务程序 定时变量不加static 也会自动分配固定内存
而STM是临时变量
---------------------
还有就是默认的强制类型转换
   uint16_t a = 0x10;
   uint16_t b = 0x12;
   uint16_t c = 0x01;
   if ((a - b) > c) {
    a = a;//51能进入到这里,STM不能
   }
请大家补充
沙发
xlsbz|  楼主 | 2013-12-4 18:14 | 只看该作者
关系到程序移植,没人?

使用特权

评论回复
板凳
airwill| | 2013-12-4 22:21 | 只看该作者
int 在51 是 16位, 到 ARM 是 32 位, 其实这是编译器问题.
x86里, C 的 int 也是16位, win32 里也是 32 位了.

51 的局部变量会分配固定内存, 则完全是 Keil C51 的编译器优化算法. 因为 51 的内存不足.

使用特权

评论回复
地板
xlsbz|  楼主 | 2013-12-4 22:33 | 只看该作者
airwill 发表于 2013-12-4 22:21
int 在51 是 16位, 到 ARM 是 32 位, 其实这是编译器问题.
x86里, C 的 int 也是16位, win32 里也是 32 位 ...

请问airwill碰见过别的什么区别?

使用特权

评论回复
5
xlsbz|  楼主 | 2013-12-8 09:31 | 只看该作者
?fdsafd

使用特权

评论回复
6
xlsbz|  楼主 | 2013-12-8 09:47 | 只看该作者
airwill 发表于 2013-12-4 22:21
int 在51 是 16位, 到 ARM 是 32 位, 其实这是编译器问题.
x86里, C 的 int 也是16位, win32 里也是 32 位 ...

还有么?

使用特权

评论回复
7
kseeker| | 2013-12-8 11:11 | 只看该作者
airwill 发表于 2013-12-4 22:21
int 在51 是 16位, 到 ARM 是 32 位, 其实这是编译器问题.
x86里, C 的 int 也是16位, win32 里也是 32 位 ...

关于内存分配这一点,见过一篇介绍的**,结论是固定分配和在栈上分配相比,并不能减少内存占用。51编译器之所以这么做是因为51的指令体系无法有效的支持对栈上变量的寻址。

使用特权

评论回复
8
大道至简| | 2013-12-9 09:24 | 只看该作者
51编译器是弓箭,ARM编译器是火铳。
要是谁发明自动编码的编译器,就是机枪了

使用特权

评论回复
9
李富贵| | 2013-12-9 10:15 | 只看该作者
就懂这点**毛还以为自己拿什么令箭了,撸主太搞笑了。

使用特权

评论回复
评论
xlsbz 2013-12-10 20:55 回复TA
你知道啥? 有什么风就放 
10
xlsbz|  楼主 | 2013-12-10 20:57 | 只看该作者
大道至简 发表于 2013-12-9 09:24
51编译器是弓箭,ARM编译器是火铳。
要是谁发明自动编码的编译器,就是机枪了 ...

区别?
大神说两句
区别 有哪些?

使用特权

评论回复
11
outstanding| | 2013-12-10 21:07 | 只看该作者
这叫区别,一个32位和单片机的比较么?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

190

主题

1614

帖子

4

粉丝