打印
[开发工具]

新版 ChipON---IDE编译器,试用经验

[复制链接]
2504|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
laoxu|  楼主 | 2016-6-18 08:08 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
从官网上下载了最新版的 ChipON---IDE编译器,经测试,已改的比较实用了。
一般的 常数表格 能放在 ROM中,在占用RAM空间,在程序中正常引用。

嵌入式汇编,已支持使用标号了, 很实用。


建议复杂一点的中断程序,可使用嵌入式汇编编程,中断过程中用到的变量,采用全局变量定义,再在汇编中引用,效果很好。
沙发
laoxu|  楼主 | 2016-6-19 09:31 | 只看该作者

RE: 关于 新版 ChipON---IDE编译器,库优化及BUG

碰到什么说什么,仅供参考。


1.  int类型加法,下图中,框线中的指令可优化去除,因为最高位无需进位,同理,long类型加法,最高位加法后,这两条判断指令,也可优化掉。



使用特权

评论回复
板凳
laoxu|  楼主 | 2016-6-19 09:32 | 只看该作者
本帖最后由 laoxu 于 2016-6-19 09:46 编辑

2.  int型 转 long型,库程序有问题,见下图框线中程序。



框中程序的目的,是用 CY - Ia.bit15 - Ib.bit15 , 作为扩展的符号位。

假如: Ia = -1, Ib = 2;  即 Ia = 0xffff, Ib = 0x0002;

  相加后值 为:0x0001(正数,无进位,CY=0)

  根据  CY - Ia.bit15 - Ib.bit15 计算,扩展的符号位为负数,明显不对。

这部分库程序应改为:
                                           _00009_DS_
                                                   BANKSEL        r0x1003
000038    ****        MOVZ  R0, 0x8e                MOV     R0, r0x1003
000039   9800     MOV        R1, #0                       MOV        R1,# 0x00
00003a   778f     JNB        R0, 7                      JNB        R0, 7
00003b   98ff     MOV        R1, #0xff                    MOV        R1,# 0xff
                                                   BANKSEL        r0x1009
00003c   5194     MOV        0x94, R1                     MOV        r0x1009, R1
                                                   BANKSEL        r0x1004
00003d   5190     MOV        0x90, R1                     MOV        r0x1004, R1


使用特权

评论回复
地板
zhaor| | 2016-6-20 10:28 | 只看该作者
不能用C吗?

使用特权

评论回复
5
laoxu|  楼主 | 2016-6-20 10:32 | 只看该作者

用C, 上图是 C编译后的汇编代码。

使用特权

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

本版积分规则

个人签名:猜猜俺是谁的马夹?

146

主题

2274

帖子

221

粉丝