请教个Linux内核空间32位乘法的问题

田田QQ

开发平台:Linux2.6、PowerPC

内核空间涉及到两个32位数乘法的计算,例如c=a*b;

c是64位,a、b都是32位,但计算结果只能得出实际值的低32位。

求助下OL大神,不甚感谢!

田田QQ
程序不好拷贝,就是个乘法,然后printk打印出来的,64位输出%llu,应该也没问题
一醉一生
objdump下,看看汇编吧

其实做人和做妖是一样的,只不过人是人它妈生的,妖是妖它妈生的。
他明白了,你呢?
田田QQ
内核中计算32位乘法,没什么特殊要注意的吧,不会像除法一样麻烦吧
锦华流年 #2
发段程序过来看下
我不是纸杯
a,b给成64位算算

一个沉溺于自我完善而不能自拔的人
田田QQ
默认不支持64位乘法吧,估计得修改config文件
我不是纸杯 #6
a,b给成64位算算
锦华流年

和内核没啥关系吧  整数的话自己转到unsigned long long再计算 防止发生截断误差 

否则a * b的结果是32位的 赋值给64位的变量 高位当然是0了

田田QQ
a,b都转到64位?编译时缺少库
锦华流年 #8
和内核没啥关系吧 整数的话自己转到unsigned long long再计算 防止发生截断误差 否则a * b的结果是32位的 赋值给64位的变量 高位当然是0了
锦华流年
贴错误信息
田田QQ #9
a,b都转到64位?编译时缺少库