[SH]如何在9860SDK中使用64位无符号整数?
如题,移植Eigenmath遇到的问题。我在sh的官方文档只见到处理64位乘法的一个函数
long dmuls_h(long data1,long data2)
带符号的 32 位 x 带符号的 32
位执行带符号 64 数据的乘法,
并返回一个高 32 位的结果
long dmuls_l(long data1,long data2)
带符号的 32 位 x 带符号的 32
位执行带符号 64 数据的乘法,
并返回一个低 32 位的结果
蛋疼了,long long和__int64都用不成了.. 另外我吐槽一下eigenmath作者的不良习惯:因为是使用c++,允许不同函数拥有同一个函数名(编译时时根据参数表来判断,说不定会生成一些什么_func_int_int或者_func_void...)
我打算全改成c的,一遍没看完吐了...prototypes.h就18.8KB....尤其是一个叫decomp的函数,同一个名字有两个实现(decomp_void,decomp_int)...最后我还是放弃了,用c++吧.. 另外附上维基百科里面关于CAS的对比,包括了几乎所有已知的CAS
http://en.wikipedia.org/wiki/List_of_computer_algebra_systems
CASIO的Classpad Manager和CASSIOPEIA(CASIO-MAPLE )
以及ti买来的Derive,TI-Nspire CAS (Computer Software)都在列 支持一下,希望能成功移植,fx-9860就会有一个真正可靠的CAS了。 本帖最后由 朔雪X忆 于 2012-8-27 08:51 编辑
解决方法是……改用GCC??
见此:
http://www.cemetech.net/forum/viewtopic.php?t=8025&start=20
-更新
不对……文中所述的是PRIZM GCC吧……
-再更新
在Cemetech问了一下,原帖在
http://www.cemetech.net/forum/viewtopic.php?t=8112
……其实可以用long long? c++函数重载很蛋疼……
不过我看编译器手册那个sh是可以编译c++的呀
另外64位的话自己考虑用位段能不能实现吧…… 5# 朔雪X忆
实测用不了longlong 好吧我手贱,我把long long全部换成long了
结果...crash了..
问题应该就是出在这个高精度运算上
没改之前精度高的吓人的..
按那个论坛里面所说,用两个long的结构实现long long不知道是否可能
页:
[1]