网上普遍反应, IAR C51 编译的代码质量 要优于 Keil C51.
让我想起了很久前看到的一篇贴子, 作者用一个也算比效规范的写法, 用宏定义了一个 常数指针作为 XDATA的地址.
IAR C51编译后, 直接用这常数, 对 DPTR赋值.
Keil C51编译后, 先用这常数对内部变量赋值, 再转换成指针, 最后才对 DPTR赋值.(其常数值始终未变), 代码如同上面的例子, 一大堆.
宏定义经人工优化后, 在 C251编译环境下, 效果好多了, 代码长度接近 汇编级, 我再看看, 是否还能再优化, 期望代码长度达到 汇编级,
这是C251正常编译结果:
宏定义又做了进一步优化, 在 C251编译环境下, 已达到极限了, 红框内的代码, 因 C251 编译器问题, 无法去除(优化) .
这是C251最终编译结果:
这是测试代码, 能自动识别 C51编译器 和C251编译器 , 编译出最优最短的执行代码.
必须给楼主点赞
不错不错,这个要支持
期待官方库更加完善
LAOXU 发表于 2023-2-1 06:34
网上普遍反应, IAR C51 编译的代码质量 要优于 Keil C51.
让我想起了很久前看到的一篇贴子, 作者用一个也 ...
IAR51好像边缘化了,上次应用的时候好像十年前了,后来用KEIL习惯了就忘记了还有IAR:lol
STC 1T 8051:
Keil/这个最实用;
IAR C++ for 8051/【C99, C++, 都是精华】;
SDCC/玩玩可以, 企业就不要玩这东西了
STC32G12K128 : Keil C251/绝对实用
深圳国芯人工智能有限公司-其它 (stcai.com)
推荐最新编写的 STC32G_MDU32 标准数学函数库,
函数库, 含以下库文件.
1. 浮点加减乘除法
2. 32位整数乘除法(快速)
2. 64位长整数加减乘除法
3. ABS求绝对值.