peitianyu 发表于 5 天前

[开源分享] c11编译stc51单片机

填个坑, 之前更新编译器时遇到了一些问题,
在做后端ssa优化完之后转c51汇编时,

1. 指令选择存在问题
2. 对于寄存器分配上还是不够灵活, 然后前段时间又比较忙,
    就没有重新整理做这件事情.

最近重新整理了一下思路发现,
我实际上不需要跟后端硬刚, 直接让c51作为后端就行,
类似于python得思路, 我只需要在前端做c11->c89得解释工作就行,
于是就有了这个项目, 欢迎大家测试~
大家在玩得时候顺手给个star, 谢谢
peitianyu/c51_compiloer



完整可以关注github的更新, 此处固件更新可能不及时
1. c11大部分语法都支持, 具体可以看一下readme
2. 支持中文变量名与中文函数名
3. 默认会使用嵌入的编译链, 若大于2K, 会去C:\Keil_v5\C51\BIN找编译链接器
4. 暂时测试了
    a. gpio/led/delay等简单编译

    b. loli3遥控器固件代码编译
    c. 中文变量名函数名编译
5. 支持类似于tcc的 @list.txt编译, 例如: .\ttcc.exe --% @demo\list.txt
```
# list.txt 编译配置
--target mcs51
--model small
-Idemo
-IINC
-o demo.HEX
main.c timer.c uart.c gpio.c

```




soma 发表于 5 天前

支持所有51吗

peitianyu 发表于 5 天前

soma 发表于 2026-7-17 13:21
支持所有51吗

keil支持得都支持, 只是语言改成c11语法了

peitianyu 发表于 5 天前

peitianyu 发表于 2026-7-17 13:23
keil支持得都支持, 只是语言改成c11语法了

之后有时间补全一下c251得支持, 或者添加其他语言得支持比如go, c++等

狂热主宰 发表于 5 天前

peitianyu 发表于 2026-7-17 13:26
之后有时间补全一下c251得支持, 或者添加其他语言得支持比如go, c++等

Python也有在单片机上用的

21cnsound 发表于 5 天前

内置工具链不能编译大于2k的目标代码

peitianyu 发表于 5 天前

21cnsound 发表于 2026-7-17 15:38
内置工具链不能编译大于2k的目标代码

我晚上测试看一下呢

peitianyu 发表于 5 天前

21cnsound 发表于 2026-7-17 15:38
内置工具链不能编译大于2k的目标代码

我测试了, 确实如此, 不过如果keil已经升级(pojie)了, 是可以直接用的, 没有限制

peitianyu 发表于 5 天前

21cnsound 发表于 2026-7-17 15:38
内置工具链不能编译大于2k的目标代码

我看了一下好像可以避开, 但是似乎有风险就算了{:hanxiao:}
页: [1]
查看完整版本: [开源分享] c11编译stc51单片机