找回密码
 立即注册
楼主: 王昱顺

自研C语言编译器发布,STC IDE —— 面向STC32系列及AI8051U的C语言编译器,11/7更新

 火.. [复制链接]
已绑定手机
已实名认证

148

主题

4104

回帖

1万

积分

超级版主

积分
11138
 楼主| 发表于 2026-8-21 23:10:35 | 显示全部楼层
14712*** 发表于 2026-8-21 22:35
切换工程的时候选择的芯片和EPP FLASH都无变化

现在是功能不随芯片绑定的,这个确实是设计疏漏,下个版本将会补充这个功能,工程内记录芯片之类的配置
回复

使用道具 举报 送花

已绑定手机
已实名认证

148

主题

4104

回帖

1万

积分

超级版主

积分
11138
 楼主| 发表于 2026-8-21 23:59:04 | 显示全部楼层
截图202608212353555066.jpg

新版内容预览(已经推送更新):
将提供全新的调试/下载功能(注意,目前仅支持SWD模式下下载/调试,需要芯片支持硬件SWD)
其中下载默认支持差分HEX下载,针对改动函数的参数值情况,下载速度可以提升至100ms左右
对于10Kb大小的文件测试,第一次全量下载1.4s,第二次为145ms,提升达到10倍,更大的程序则收益更加明显
且可以一键导入项目变量,或者右键导入,支持运行时刷新变量内容,并可设置刷新间隔


回复

使用道具 举报 送花

28

主题

158

回帖

1166

积分

金牌会员

积分
1166
发表于 2026-8-22 10:14:38 | 显示全部楼层
截图202608221013229836.jpg
这部分代码,是不是可以优化一下?
有 CPL BIT 指令的,这个效率太低了吧?

点评

我看了一下,其实keil也是这么判断的,不过你的这个建议非常有用,我也觉得可以优化成一条cpl  详情 回复 发表于 2026-8-22 12:24
对的,我再优化优化,~取反其实是可以优化成 cpl 的  发表于 2026-8-22 10:29
回复

使用道具 举报 送花

已绑定手机
已实名认证

148

主题

4104

回帖

1万

积分

超级版主

积分
11138
 楼主| 发表于 2026-8-22 12:24:53 | 显示全部楼层
zh*** 发表于 2026-8-22 10:14
这部分代码,是不是可以优化一下?
有 CPL BIT 指令的,这个效率太低了吧?



我看了一下,其实keil也是这么判断的,不过你的这个建议非常有用,我也觉得可以优化成一条cpl
回复

使用道具 举报 送花

已绑定手机

7

主题

115

回帖

2572

积分

金牌会员

积分
2572
发表于 2026-8-22 17:33:13 | 显示全部楼层
zh*** 发表于 2026-8-22 10:14
这部分代码,是不是可以优化一下?
有 CPL BIT 指令的,这个效率太低了吧?

这是高手呀
回复

使用道具 举报 送花

6

主题

90

回帖

826

积分

高级会员

积分
826
发表于 2026-8-22 17:34:55 | 显示全部楼层
同样的程序,还需要优化。

0000:02 00 BFLJMP 0x00BF
0003:7E 00 00MOV R0, #0x00
0006:7A 03 01 00MOV 0x0100, R0
30if(NULL == str) { return 0; }    // 参数检查,为空指针,返回字符串长度为 0。
000A:7E 18 00 00MOV DR4, #0x0000
000E:7E 08 00 00MOV DR0, #0x0000
0012:7A 0C 00 01MOVH DR0, #0x0001
0016:7E 18 00 00MOV DR4, #0x0000
001A:BF 10CMP DR4, DR0
001C:78 11JNE Z=0 +17
001E:7E 24 00 00MOV WR4, #0x0000
0022:CA 29PUSH WR4
0024:DA 08POP R0
0026:7A 01 11MOV 0x11, R0
0029:DA 08POP R0
002B:7A 01 10MOV 0x10, R0
002E:22RET
32str[0] = HEX_ASCII_LUT[(num >> 4) & 0x0FU];
002F:7E 37 00 40MOV WR6, 0x0040
0033:0E 34SRA WR6
0035:0E 34SRA WR6
0037:0E 34SRA WR6
0039:0E 34SRA WR6
003B:5E 34 00 0FANL WR6, #0x000f
003F:75 84 FFMOV 0x84, #0xFF
0042:90 02 00MOV DPTR, #0x0200
0045:7C B7MOV R11, R7
0047:93MOVC A, @A+DPTR
0048:7C 1BMOV R1, R11
004A:7A 11 28MOV 0x28, R1
004D:7E 0F 00 42MOV DR0, 0x0042
0051:7F 10MOV DR4, DR0
0053:BE 24 80 00CMP WR5, #0x8000
0057:50 08JNC CY=0 +8
0059:E5 28 7C 2BMOV R2, 0x28
005D:39 21 00 00MOV @DR4+0x0000, R2
33str[1] = HEX_ASCII_LUT[num & 0x0FU];
0061:7E 27 00 40MOV WR4, 0x0040
0065:5E 24 00 0FANL WR4, #0x000f
0069:75 84 FFMOV 0x84, #0xFF
006C:90 02 00MOV DPTR, #0x0200
006F:7C B5MOV R11, R5
0071:93MOVC A, @A+DPTR
0072:7C 3BMOV R3, R11
0074:7A 31 28MOV 0x28, R3
0077:7E 1F 00 42MOV DR4, 0x0042
007B:7E 08 00 01MOV DR0, #0x0001
007F:2F 10ADD DR4, DR0
0081:BE 24 80 00CMP WR5, #0x8000
0085:50 08JNC CY=0 +8
0087:E5 28 7C 0BMOV R0, 0x28
008B:39 01 00 00MOV @DR4+0x0000, R0
34str[2] = '\0';  // 添加字符串结束符
008F:7E 10 00MOV R1, #0x00
0092:75 28 00MOV 0x28, #0x00
0095:7E 1F 00 42MOV DR4, 0x0042
0099:7E 08 00 02MOV DR0, #0x0002
009D:2F 10ADD DR4, DR0
009F:BE 24 80 00CMP WR5, #0x8000
00A3:50 08JNC CY=0 +8
00A5:E5 28 7C 2BMOV R2, 0x28
00A9:39 21 00 00MOV @DR4+0x0000, R2
36return 2;       // 返回字符串长度 (不包含结束符'\0')
00AD:7E 34 00 02MOV WR6, #0x0002
00B1:CA 39PUSH WR6
00B3:DA 08POP R0
00B5:7A 01 11MOV 0x11, R0
00B8:DA 08POP R0
00BA:7A 01 10MOV 0x10, R0
00BD:22RET
00BE:22RET
00BF:43 BA 80ORL 0xBA, #0x80
00C2:75 81 00MOV 0x81, #0x00
00C5:75 85 01MOV 0x85, #0x01
00C8:90 00 00MOV DPTR, #0x0000
00CB:E4CLR A
00CC:75 84 01MOV 0x84, #0x01
00CF:7E 24 00 0AMOV WR4, #0x000A
00D3:BE 24 00 00CMP WR4, #0x0000
00D7:68 06JE Z=1 +6
00D9:F0MOVX @DPTR, A
00DA:A3INC DPTR
00DB:1B 24DEC WR4, #1
00DD:80 F4SJMP -12
41num = uint8_to_hex_string(0x5a, string1);
00DF:7E 24 00 5AMOV WR4, #0x005A
00E3:7A 27 00 40MOV 0x0040, WR4
00E7:7E 18 00 00MOV DR4, #0x0000
00EB:7A 1C 00 01MOVH DR4, #0x0001
00EF:7A 1F 00 42MOV 0x0042, DR4
00F3:CA B8PUSH R11
00F5:E5 08 7C 0BMOV R0, 0x08
00F9:DA B8POP R11
00FB:CA 08PUSH R0
00FD:11 03ACALL 0x003
00FF:E5 10 7C 3BMOV R3, 0x10
0103:7A 31 20MOV 0x20, R3
0106:E5 11 7C 0BMOV R0, 0x11
010A:7A 01 21MOV 0x21, R0
010D:DA 08POP R0
010F:7A 01 08MOV 0x08, R0
43while(1)
0112:80 FESJMP -2



编译成功 · 代码 276 BROM 0.22% · edata 0B · xdata 10B


KEIL.png

点评

是的,还需要努力,这里的问题其实在于给数组放到xdata区域了,放到edata区域程序就会少很多。 这里的自动分配机制可能有点小问题。正在持续优化中。 这部分需要投入较多精力。但是还是有信心超过keil的代码体积和运  详情 回复 发表于 2026-8-22 20:28
回复

使用道具 举报 送花

已绑定手机
已实名认证

148

主题

4104

回帖

1万

积分

超级版主

积分
11138
 楼主| 发表于 2026-8-22 20:28:51 | 显示全部楼层
sdw*** 发表于 2026-8-22 17:34
同样的程序,还需要优化。

0000:02 00 BFLJMP 0x00BF

是的,还需要努力,这里的问题其实在于给数组放到xdata区域了,放到edata区域程序就会少很多。
这里的自动分配机制可能有点小问题。正在持续优化中。
这部分需要投入较多精力。但是还是有信心超过keil的代码体积和运行速度的
回复

使用道具 举报 送花

已绑定手机

13

主题

115

回帖

418

积分

中级会员

积分
418
发表于 2026-8-23 08:40:42 | 显示全部楼层
王*** 发表于 2026-8-21 23:59
新版内容预览(测试中,测试完成将推送更新):
将提供全新的调试/下载功能(注意,目前仅支持SWD模式下 ...

这个版本大概什么时候推送?

点评

目前还在测试优化部分, 预计周一推送  发表于 2026-8-23 11:44
只要不死学,就往学里死
回复

使用道具 举报 送花

已绑定手机

13

主题

115

回帖

418

积分

中级会员

积分
418
发表于 2026-8-23 08:45:37 | 显示全部楼层
王*** 发表于 2026-8-21 23:59
新版内容预览(测试中,测试完成将推送更新):
将提供全新的调试/下载功能(注意,目前仅支持SWD模式下 ...

只能支持SWD吗?Uart、USB仿真不支持吗?

点评

是的,暂时不支持  详情 回复 发表于 2026-8-23 11:41
只要不死学,就往学里死
回复

使用道具 举报 送花

已绑定手机

13

主题

115

回帖

418

积分

中级会员

积分
418
发表于 2026-8-23 08:57:43 | 显示全部楼层
截图202608230857093326.jpg

那个windows自带杀软的好像对程序有点偏见


是不是因为没有“发行者”

点评

这个其实就不算报毒了,只是一种提醒。 真报毒的,它底下都没有那个继续运行按钮,直接就是警告。 发布者未知很正常,因为我没有对它做签名什么的。签名还挺麻烦的,要去买证书,暂时先不搞  详情 回复 发表于 2026-8-23 11:44
只要不死学,就往学里死
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-11-14 10:02 , Processed in 0.092250 second(s), 82 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表