找回密码
 立即注册
查看: 3065|回复: 17

64位整数运算问题

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:467
  • 最近打卡:2025-05-01 19:48:59
已绑定手机

20

主题

106

回帖

671

积分

高级会员

积分
671
发表于 2023-1-22 09:20:20 | 显示全部楼层 |阅读模式
Keil只支持32位整数,没有64位,有没有什么头文件、库函数或内嵌汇编的方法可以实现?
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2023-2-4 20:37:51 | 显示全部楼层
64位   长整数 加/减/乘/除法 来了~~~
推荐最新编写的 STC32G_MDU32 标准数学函数库,
函数库, 含以下库文件.
1. 浮点加减乘除法
2. 32位整数乘除法(快速)
2. 64位长整数 加/减/乘/除法
3. ABS求绝对值.

未命名1.JPG
  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2023-2-4 20:39:34 | 显示全部楼层
说明:
一. 编写了浮点数加减乘除法, 其中浮点数除法为快速除法, 由于浮点数加减乘除法, 调用内部公共(判断溢出,处理0,规格化等)子程序,

如仅加入 C251浮点数快速除法, 没法调用C251内部公共子程序, 使得编译后程序代码变长, 故这次浮点数加减乘除法全部加入.

二. MDU32 所带的 32位整数乘除法(快速)

三. Keil C251 编译器不支持 64位长整数类型, 加入64位长整数加减乘除法运算函数库, 扩大了Keil C251 编译器的应用范围.

如需使用 64位长整数加减乘除法, 请在程序开头, 插入头文件 LONG64.h , 其他程序都是内部标准函数, 无需插入头文件.

附带 64位长整数加减乘除法 测试程序, 请单步运行, 观察程序运行后的数学运算结果.

四. 关于 ABS求绝对值. 上次看 STC32 官方FPMU库, 发现 8位整数转浮点数, 16位整数转浮点数, 32位整数转浮点数, 存在错误.

顺便看了一下 Keil C251自带的 ABS函数, 发现其执行代码, 可作进一步优化, 这次将其优化后加入.

包含 ABS, CABS, LABS, FABS 函数

五. 官方库有点多, Large 模式和 Huge 模式 分开 两个库, 没必要, Keil 官方库, 这两种 模式, 都是合并成一个库的, 方便使用.

而让 Keil 官方分开的库, 是根据 Memory 储存模式不同, 分别 封装 不同的库, 其最主要的区别, 是 2字节指针 和 4字节指针.

2字节指针, 是为了兼容 51程序, 直接在 251上运行, 一般使用 Binary模式运行, 早期的芯片容量不大, 为节约内存而使用.

现在已完全没必要了.

STC32 采用 Source模式运行, 且芯片容量又大, 如 Memory 储存模式选择 Tiny模式, 大一点的程序就编译通不过了,

就算通过了, 且怀疑运行是否正常? 工作是否可靠? (官方手册强调 STC32G 是 4字节指针), 当用 2字节指针, 去访问

CODE 中的常数, 会产生什么结果? (我没测试过, 但大概率是不会有好结果的).

因此, STC32 专用库只需要编写 支持4字节数据指针即可, 这样, 完全可以只用一个库, C251 编译器 自动识别 Large 和 Huge 模式,

很容易的解决库程序兼容问题.

六. 官方库编译时会产生大量警告及无用代码, 把库按照正规标准格式书写后编译, 这些警告及无用代码, 都将不会存在了.


STC32G_LIB.rar (202.47 KB, 下载次数: 218)

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

积分
15630
发表于 2023-1-22 09:44:15 | 显示全部楼层
  • 打卡等级:以坛为家II
  • 打卡总天数:467
  • 最近打卡:2025-05-01 19:48:59
已绑定手机

20

主题

106

回帖

671

积分

高级会员

积分
671
发表于 2023-1-22 10:04:31 | 显示全部楼层
神*** 发表于 2023-1-22 09:44
不知如下贴能否帮上忙
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=288&extra=&highlight=64%E ...

这个是64位小数C251的Keil的配置,C51如何配置? 64位整数没有吗?
  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

积分
15630
发表于 2023-1-22 10:07:47 | 显示全部楼层
double ?
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

积分
15630
发表于 2023-1-22 10:08:46 | 显示全部楼层
或者自己用 汇编 写一段 ?
  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

积分
15630
发表于 2023-1-22 10:12:19 | 显示全部楼层
STC32G12K128/STC32G8K64 和 STC8H8K64U-45MHz-LQFP64/LQFP48/LQFP32
管脚是兼容的,建议对计算要求高的,直接上 STC32
换个头文件,STC8H.h ====> STC32G.h
换个编译器, keil C51 ====> keil C251
就从 STC8H到STC32G了

1.png


  • 打卡等级:以坛为家II
  • 打卡总天数:467
  • 最近打卡:2025-05-01 19:48:59
已绑定手机

20

主题

106

回帖

671

积分

高级会员

积分
671
发表于 2023-1-22 10:12:55 | 显示全部楼层
神*** 发表于 2023-1-22 10:08
或者自己用 汇编 写一段 ?

汇编与C混合怎么写?

点评

授人以鱼不如授人以渔,如下还是看下  详情 回复 发表于 2023-1-22 10:16
  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

积分
15630
发表于 2023-1-22 10:14:45 | 显示全部楼层


1.png
2.png
  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

积分
15630
发表于 2023-1-22 10:16:02 | 显示全部楼层
12*** 发表于 2023-1-22 10:12
汇编与C混合怎么写?

授人以鱼不如授人以渔,如下还是看下

1.png
  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

积分
15630
发表于 2023-1-22 10:26:00 | 显示全部楼层
我从STC8H的数据手册中查到的 C/汇编混合编程
1.png
2.png
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 17:54 , Processed in 0.156663 second(s), 123 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表