LAOXU 发表于 2024-1-26 14:47:10

我一直认为 , 老姚的 外挂32库, 扩展 51系列, 准备搞的像 STC32一样, 有 2个系列, 分别加 1~2个模块( MDU32 和 FPMU) , 人为限制 MDU32C 的功能.

假如没这个打算, 那只能是 贵司的设计人员, 对 C51的汇编级实现(编译)原理 理解不深刻, 只考虑 整数运算, 没考虑小数(浮点数)运算的特殊性.

仔细想想也是, 我也 60岁退休了, 比我小的 , 汇编用的少(主要用 C), 汇编理解和经验不足, 比我大的 , 出来网上混的也少(除非特别喜欢这方面).

现在开发都流行 硬件+C , 比汇编 更容易维护, 开发速度快, 更节省人工, 因此, 中国汇编级人才断挡. 高手难寻.

LAOXU 发表于 2024-1-26 14:54:50

神农鼎 发表于 2024-1-26 14:20
要放到 【R0/R1/R2/R3】, 但 KEIL C51 经常会优化这优化那,可能会冲突;
只能再增加条指令 放【R0/R1/R2/R ...

除法指令 不是 余数 放在 R0/R1/R2/R3

KEIL C51 优化不到这 一块

LAOXU 发表于 2024-1-26 15:06:03

在乘除运算中,

1. 乘法 N位 * N位 = 2N位 ,除法 2N位 / N位 = 2N位 (余数 N位)最实用.

2. 除法 N位 / N位 = N位 (余数 N位)免强能用(应用范围小).

3. 乘法 N位 * N位 = N位 最不实用 (除非增加多条乘法指令, 比如 AVR,有 整数, 小数, 有符号数, 无符号数 各种乘法指令),

神农鼎 发表于 2024-1-26 15:14:28

老许,x86 都没退休,x51刚到夏天,你退那么早干嘛
x86, x51都是大哥,RISC/ARM/RISC-V 都是 弟弟,
弟弟们在发展,哥哥们也在进步 !
32位51论坛也才满了周岁,必定一路长虹 !
不懂汇编肯定不能算 MCU 专家

LAOXU 发表于 2024-1-26 15:28:08

神农鼎 发表于 2024-1-26 15:14
老许,x86 都没退休,x51刚到夏天,你退那么早干嘛
x86, x51都是大哥,RISC/ARM/RISC-V 都是 弟弟,
32位51 ...

汇编经验靠积累, 开发的少用的少, 再聪明能力再强也没用, 工作年限没到成不了 汇编资深专家.

深圳找资深 C专家, 一抓一大把, 想找 真正的 资深 汇编专家, 肯定难.

神农鼎 发表于 2024-5-2 18:27:19

MDU32C
STC8H2K32U-45I-LQFP32 已微信小商城上架销售
本坛网友,全部【免费+包邮 送】
深圳国芯人工智能有限公司-产品_STC8G系列 (stcai.com)















LAOXU 发表于 2024-5-2 20:38:27

本帖最后由 LAOXU 于 2024-5-2 21:06 编辑

前段时间编了一下MDU32C运算库
一. 整数运算总结如下:
1. 32位整数乘除运算和移位操作效率最高.
2. 16位整数乘除运算和移位操作效率差些(用32位指令模拟操作).
3. 32位整数加减运算没用上! (C51直接内嵌数条指令执行,非子程序调用).

二. 单精度浮点数运算总结如下:
1. 浮点加/减法使用了 32位逻辑左移/右移.
2. 浮点乘法使用了 32 位乘法(模拟16位乘法操作,效率比较差).
3. 浮点除法使用了 无符号数 32 位除法.
4. 数据规格化没用上! (主要是格式和 C51浮点数格式不符,数据格式转换后效率非常差).
5. 32位整数带进/借位加减运算, 如不能做到和 实际的 CY标志位同步, 建议取消 (即做成不带进/借位加减运算).

三. 针对 MDU32C库的完善, 以下建议请考虑
1.32 位乘法 X 32 位乘法 = 积 64位
2.以上如不修改, 建议增加一条 32 位小数乘法
3.数据规格化 格式 改成 R5R6R7R4 是否行? 以符合 C51浮点数规范.
4.算术左移右移, 最末移出位, 如有可能, 请放在 Cy中, 便于级联, 四舍五入等操作.




LAOXU 发表于 2024-5-2 20:51:02

本帖最后由 LAOXU 于 2024-5-2 21:17 编辑

针对函数的可重入性, 51能使用的寄存器实在太少了, 如果要增加指令,
下列建议供参考
1. 数据互换    R4R5R6R7 <--> R0R1R2R3         
2. MDU32C 内增加一个 32位临时寄存器 DW32, 并支持下列指令.
    a. 数据互换   DW32 <--> R0R1R2R3         
    b. 数据互换   DW32 <--> R4R5R6R7
3. 32位加1    R4R5R6R7 加1
4. 32位减1    R4R5R6R7 减1
5. 32位求反    /R4R5R6R7
6. 32位求补    -R4R5R6R7
7. 32位比较   R4R5R6R7 - R0R1R2R3, 影响标志位
8. 32位循环左移   R4R5R6R7 (仅循环左移1位)
9. 32位循环右移   R4R5R6R7 (仅循环右移1位)




神农鼎 发表于 2024-5-2 20:53:08




Ver6.94E (2024-4-29)
1. 调整串口绘图界面上的按钮大小
2. 增加STC8H2K32U系列
3. 更新STC8H系列的头文件
4. 更新Keil环境下的CDB文件
   (增加STC8H2K32U系列)
5. 解决同时使用多个Link1D工具时出现的串口冲突问题
6. 更新STC-USB Link1D仿真/下载器固件 (v1.15)
7. 脱机下载板U8W固件更新为v1.50
   (工具默认工作在3.3V)
   (默认使用3.3V电压对宽压芯片进行在线和脱机下载)
8. 增加STC8H系列MDU32C数学库STC8_MDU32C_V1.0.LIB下载
   (MDU32C数学库仅对STC8H2K32U系列可用)
   (MDU32C库支持32位乘法、无符号32位除法、有符号32位除法、
      32位逻辑左移、32位逻辑右移、32位算术右移6种运算)


LAOXU 发表于 2024-5-2 21:28:11


你的太简单了, 仅仅支持 32位整数运算.


我编写了 除了 32位整数运算. 还有16位整数运算 和 单精度浮点数加减乘除法运算.
以及 浮点数 --> 整数,整数 --> 浮点数 的转换
把 MDU32C 的功能 压榨到极致 !


页: 1 [2]
查看完整版本: MDU32C 定型流片了吗?