- 打卡等级:以坛为家I
- 打卡总天数:312
- 最近打卡:2025-03-11 13:20:13
荣誉版主
- 积分
- 5395
|
发表于 2023-11-26 22:37:20
|
显示全部楼层
确实有问题, 经确认是 MDU16 问题, 由于操作数寄存器都放在 扩展 XFR 中, 大量数据传送 需要通过 DPTR转送, 拖慢且影响整体速度,
用官方 MDU16 库中的 16位 int 乘法, 和 用 软件 计算 16位 int 乘法, 经测试速度对比, 相差 约 3倍, 注意, 不是快 3倍, 是慢了 3倍.
分析主要原因是: MDU16 操作寄存器 的 大量数据 都要通过 DPTR转送, 拖慢速度
而 STC8H 单周期指令全面提速, 软件法 计算 速度 提速, 反正, 最终的结果是, MDU16 败给了 软件库
51 对 内该的提升, 主要有 3点, 增加 DPTR指针, 增加数学运算库, 堆栈指针升级为 16位.
STC 对前 2项的提升, 做了 尝试, 从目前来看, 都不算成功, 建议 不要轻易使用这些功能(除非你是汇编高手)
相比之下, STC32 这 一块, 就做的比较成功(DPTR 双指针, 一般用不到, 数学运算库 做的还行 ) |
|