从 SDCC-51 到 SDCC-Ai8051U-32Bit,可能是最快的一条路
神农鼎 发表于 2024-11-26 12:32
从 SDCC-51 到 SDCC-Ai8051U-32Bit,可能是最快的一条路
(1)据我好几年前的了解,SDCC-51的Windows版本使用了一个非开源的需要授权的模块,因此SDCC-51 For Window提供的EXE的Setup程序是可以运行的,供用户免费使用的。但是SDCC-51 For Window官方的开源版本程序正好就缺少了这个授权模块,无法编译成功。因此要将Windws下的SDCC-51升级为SDCC-251,可能需要先去获得该模块的授权。
(2)不过将Linux下的SDCC-51升级为Linux下的SDCC-251就没有这个限制,我猜该模块的Linux版本是开源免费的,SDCC-51 for Linux开源版本是可以编译成功的。
(3)我当初看了SDCC-51的源代码,觉得其架构很难升级为80251指令集架构,因此就反思:为什么SDCC自己团队不将其升级为SDCC-251?是它们没有那个能力吗?我觉得不是,肯定是基础框架方面的问题。
(4)另外SDCC-51 for Linux开源并维护了好多个版本,为什么那么多年没有厂家、团队或者个人将其升级为SDCC-251 for Linux?是全世界的有时间和有需求做这个事的人都没有我 聪明?肯定不是,一定是已经试过了不成功。
(5)所以好几年前我就放弃了对SDCC的移植,专心研究自己的8051/80251指令集C语言编译器。
学习
杨为民 发表于 2024-11-26 15:17
(1)据我好几年前的了解,SDCC-51的Windows版本使用了一个非开源的需要授权的模块,因此SDCC-51 For Win ...
看到您之前有提到的 难度在哪 的文章
神农鼎 发表于 2024-11-26 16:42
看到您之前有提到的 难度在哪 的文章
业余爱好,没有发表
杨为民 发表于 2024-11-26 17:06
业余爱好,没有发表
【新提醒】软件C语言编译器与人类程序员使用8051汇编语言编程的方法对比(上) - AI8051U体系结构,高峰论坛,芯起点,芯高度 国芯技术交流网站 - AI32位8051交流社区 (stcaimcu.com)
神农鼎 发表于 2024-11-26 17:17
【新提醒】软件C语言编译器与人类程序员使用8051汇编语言编程的方法对比(上) - AI8051U体系结构,高 ...
(1)这就是根据当时的阅读得到的结果,比如80251的32位寄存器DR0,WR0,WR2与R0R1R2R3对应的关系就是大端格式的,而80251一条指令“MOV Dir8, DR0”就把32位数据按大端格式存到DATA空间中了。所以SDCC-51要升级要改的太多了。
(2)我的印象还有SDCC-51的重定位连接器LINK部分支持的重定位地址限定了16位,很难改到支持24位的重定位地址,这时编译器架构问题,很难改。
(3)另外好像还有其内部有关地址的程序变量很多是16位的整数,要想一一改成32位整数变量,难免挂一漏万,如果隐含BUG,后续改错就很难了。
不管人还是工具或者事物被淘汰就说明它已经不适应时代了,更何况就没有成为主流过的东西
杨为民 发表于 2024-11-26 15:17
(1)据我好几年前的了解,SDCC-51的Windows版本使用了一个非开源的需要授权的模块,因此SDCC-51 For Win ...
杨老师,请教您当时考虑移植SDCC是否考虑过GCC或者LLVM?LLVM编译器是完全开源的,如果能适配LLVM,C++也可以用了。
ercircle 发表于 2025-3-16 20:54
杨老师,请教您当时考虑移植SDCC是否考虑过GCC或者LLVM?LLVM编译器是完全开源的,如果能适配LLVM,C++也 ...
(1)对于8051单片机,为什么要移植SDCC?它本来就是开发8051的编译器,支持现在和未来的所以STC/AI的基于8015指令集的单片机。
(2)对于80251指令集单片机,直接为GCC写一个“AS80251”汇编语言编译器就行了呀,谈不上移植,是很正常的扩充呀。
(3)使用LLVM当然可以支持80251指令集。但是其生态环境远不如GCC。
(4)所以对于AI8052U,直接写“AS8052U”汇编语言编译器就行了.