laoxu 发表于 2016-6-18 08:08

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

从官网上下载了最新版的 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    ****      MOVZR0, 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吗?

laoxu 发表于 2016-6-20 10:32

zhaor 发表于 2016-6-20 10:28
不能用C吗?

用C, 上图是 C编译后的汇编代码。
页: [1]
查看完整版本: 新版 ChipON---IDE编译器,试用经验