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

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

 火.. [复制链接]

6

主题

90

回帖

826

积分

高级会员

积分
826
发表于 2026-8-21 09:09:17 | 显示全部楼层
现在没有必要现在啥都支持,先把C251指令集做完美,至少超过keil,其它的一步步支持,别分散精力,到时啥都做了啥都没做好。
回复

使用道具 举报 送花

25

主题

56

回帖

1391

积分

金牌会员

积分
1391
发表于 2026-8-21 10:05:17 | 显示全部楼层
编译时报sbit错误,说是只支持sfr定义的变量。单片机中处理sfr可以位寻址,还有部分ram可以位寻址。之前使用bdata定义后就可以用sbit定义其位变量。现在报错误。

点评

现在定义 bit 变量默认按照 char 处理,并未完整实现 bit 类型特性  详情 回复 发表于 2026-8-21 12:39
回复

使用道具 举报 送花

25

主题

56

回帖

1391

积分

金牌会员

积分
1391
发表于 2026-8-21 10:12:00 | 显示全部楼层
在头文件结尾#endif 后加入换行的/* */会报 条件编译中未闭合(#if/#ifdef/#ifndef 缺少#endif)

........
#endif  /*
*/

点评

新版本已推送,此问题已解决。  发表于 2026-8-24 14:37
[attachimg]147810[/attachimg] 你好,问题已修复,版本尚未更新,等待其他内容验证过后统一推送  详情 回复 发表于 2026-8-21 17:03
好的,这个是分割解析有问题,此问题将在下一个版本修复  详情 回复 发表于 2026-8-21 12:59
回复

使用道具 举报 送花

25

主题

56

回帖

1391

积分

金牌会员

积分
1391
发表于 2026-8-21 10:14:08 | 显示全部楼层
现在是否可以设置条件编译选项。

点评

[attachimg]147797[/attachimg] [attachimg]147798[/attachimg] 可以设置,并且可以正常作用  详情 回复 发表于 2026-8-21 13:02
可以设置  发表于 2026-8-21 12:59
回复

使用道具 举报 送花

28

主题

158

回帖

1166

积分

金牌会员

积分
1166
发表于 2026-8-21 11:23:38 | 显示全部楼层
  1. #include "Ai8051U.H"
  2. #include "intrins.h"
  3. void Timer11_Isr(void) interrupt 67
  4. {
  5.     P00 = !P00;          // P0.0翻转,用于观察1ms中断是否产生
  6. }
  7. void Timer11_Init(void)                //1毫秒@11.0592MHz
  8. {
  9.     P_SW2 |= 0x80;                        //使能访问XFR寄存器
  10.     T11CR &= 0xf3;                        //选择时钟源 (系统时钟SYSclk)
  11.     T11CR |= 0x10;                        //定时器时钟1T模式
  12.     T11L = 0xCD;                        //设置定时初始值
  13.     T11H = 0xD4;                        //设置定时初始值
  14.     T11CR |= 0x80;                        //定时器11开始计时
  15.     T11CR |= 0x02;                        //使能定时器11中断
  16. }
  17. void Timer2_Isr(void) interrupt 12
  18. {
  19.     P01 = !P01;          // P0.1翻转,用于观察2ms中断是否产生
  20. }
  21. void Timer2_Init(void)                //2000微秒@11.0592MHz
  22. {
  23.         AUXR |= 0x04;                        //定时器时钟1T模式
  24.         T2L = 0x9A;                                //设置定时初始值
  25.         T2H = 0xA9;                                //设置定时初始值
  26.         AUXR |= 0x10;                        //定时器2开始计时
  27.         IE2 |= 0x04;                        //使能定时器2中断
  28. }
  29. void main(void)
  30. {
  31.     // 将所有I/O设为准双向口
  32.     P0M1 = 0x00;  P0M0 = 0x00;
  33.     P1M1 = 0x00;  P1M0 = 0x00;
  34.     P2M1 = 0x00;  P2M0 = 0x00;
  35.     P3M1 = 0x00;  P3M0 = 0x00;
  36.     P4M1 = 0x00;  P4M0 = 0x00;
  37.     P5M1 = 0x00;  P5M0 = 0x00;
  38.     P6M1 = 0x00;  P6M0 = 0x00;
  39.     P7M1 = 0x00;  P7M0 = 0x00;
  40.     Timer11_Init();
  41.     Timer2_Init();
  42.     EA = 1;              // 打开总中断
  43.   while(1) P02=!P02;   
  44. }
复制代码
这段代码在 STCIDE 中编译,T11中断输出不正确,同时没有T2中断输出,注释掉T11部分正常
不正确的T11

截图202608211115342854.jpg
应该输出这样的波形
截图202608211112463307.jpg

截图202608211109107621.jpg
截图202608211111124606.jpg

点评

[attachimg]147805[/attachimg] 你好,问题已经修复,版本尚未更新,等待其余内容验证过后统一推送  详情 回复 发表于 2026-8-21 17:01
好的我看一下,我猜应该是 t11 中断号引起的,因为其他的两个芯片还没有具体测试过 可能是有一些兼容问题导致的  详情 回复 发表于 2026-8-21 12:38
回复

使用道具 举报 送花

已绑定手机
已实名认证

148

主题

4104

回帖

1万

积分

超级版主

积分
11138
 楼主| 发表于 2026-8-21 12:38:37 | 显示全部楼层
zh*** 发表于 2026-8-21 11:23
这段代码在 STCIDE 中编译,T11中断输出不正确,同时没有T2中断输出,注释掉T11部分正常
不正确的T11

好的我看一下,我猜应该是 t11 中断号引起的,因为其他的两个芯片还没有具体测试过
可能是有一些兼容问题导致的
截图202608211257139721.jpg
找到问题,中断边界跟随型号变动的功能可能设置的没有生效(或者被后续改动盖掉了)
此问题将在下个版本修复
回复

使用道具 举报 送花

已绑定手机
已实名认证

148

主题

4104

回帖

1万

积分

超级版主

积分
11138
 楼主| 发表于 2026-8-21 12:39:37 | 显示全部楼层
templ*** 发表于 2026-8-21 10:05
编译时报sbit错误,说是只支持sfr定义的变量。单片机中处理sfr可以位寻址,还有部分ram可以位寻址。之前使 ...

现在定义 bit 变量默认按照 char 处理,并未完整实现 bit 类型特性
回复

使用道具 举报 送花

已绑定手机
已实名认证

148

主题

4104

回帖

1万

积分

超级版主

积分
11138
 楼主| 发表于 2026-8-21 12:59:49 | 显示全部楼层
templ*** 发表于 2026-8-21 10:12
在头文件结尾#endif 后加入换行的/* */会报 条件编译中未闭合(#if/#ifdef/#ifndef 缺少#endif)

........ ...

好的,这个是分割解析有问题,此问题将在下一个版本修复
回复

使用道具 举报 送花

已绑定手机
已实名认证

148

主题

4104

回帖

1万

积分

超级版主

积分
11138
 楼主| 发表于 2026-8-21 13:02:16 | 显示全部楼层
templ*** 发表于 2026-8-21 10:14
现在是否可以设置条件编译选项。

截图202608211302014323.jpg

截图202608211302058910.jpg
可以设置,并且可以正常作用
回复

使用道具 举报 送花

0

主题

5

回帖

28

积分

新手上路

积分
28
发表于 2026-8-21 14:49:13 | 显示全部楼层
为什么不拿c++实现这个编译器呢,做出核心编译器,这样做成一个大的可执行文件的ide怎么和其他生态融合呢

点评

其实不加html的纯js就是核心编译器了,html只是前端功能,所有的操作都是在一个js内完成的  发表于 2026-8-21 17:03
其实当前跟其他生态融合也非常方便。例如 VS Code 插件编写,就是官方推荐使用 TypeScript 方式。当前的 IDE 如果作为 VS Code 插件的话,无需任何更改,只需要外面套层壳就可以实现。 就算是离线版本,也可以直接使  详情 回复 发表于 2026-8-21 16:57
当前是使用的TypeScript 编写,AST 部分并未自己实现,使用的是开源的 AST C11 只是后续对树的扫描,建立 IR 和优化是自己实现的 使用 TypeScript 考量是在浏览器端就可以直接运行,无需任何运行环境。 同时拥有跨端  详情 回复 发表于 2026-8-21 16:52
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-11-14 10:11 , Processed in 0.082237 second(s), 89 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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