- 打卡等级:以坛为家I
- 打卡总天数:312
- 最近打卡:2025-03-11 13:20:13
荣誉版主
- 积分
- 5395
|
发表于 2024-5-17 03:39:03
|
显示全部楼层
非常不错, 把 DPU32 的一些基本指令移植上去了, 补充了传统 51的 16位运算功能不足之短处, 赞一个!
由于浮点数存储格式不同, Keil 是 R0-R3 和 R4-R7; SDCC 是 R0,R2-R4 和 R1,R5-R7; 而 IAR 又是 R2-R5; 每家都不相同, 这标准格式没法统一, 考虑到通用性, 数据变换少不了.
在数据变换中, 这条指令作用很大.
1) 32位循环右移(或左移), 由于数据是循环的, 加一条即可.
可省去好多代码.
在格式变换中, 这条指令作用很大.
1) 32位比较指令(即做减法结果不回传).
在浮点数加/减法中, 对阶码的判断, 这条指令作用很大.
由于 32位加/减法, 进位标志已同步到 PSW中, 可省去运算过程中的 5条左右指令,
非常适合在浮点数中使用.
因此, 下列 DPU32 指令强烈建议加上.
2) SWAP 交换指令, R0-R3 和 R4-R7 内容互换.
和减法指令配合, 用于浮点数减法, R0-R3 减 R4-R7.
3) 32位 加1 指令,
用于浮点数 4舍5入.
这样, 能再次提升 浮点运算库的 运算速度。
下列指令请均情考虑:
3) 32位 减1 (和 加1 对称)
4) 32位 求负数
5) 32位 清0 (清 R0-R3 优先)
|
|