MIPS处理器下浮点指令的处理方法

  这几天编译qt,运行起来非常慢,组长让我试一下软浮点的编译器,说处理器不支持浮点,用软浮点编译器编译下会运行快一点,对于软浮点不是很明白,就网上搜集了一下,总结一下:

   在嵌入式领域,为了节省成本和减少功耗,很多芯片都是没有浮点运算模块的,一般该模块叫做FPU(float processunit)。对于不支持硬件浮点的处理器下,linux内核有一个模块叫math-emu的软件模块,就是用整数运算模拟浮点数运算,一般位于arch/mips/目录下。那么在应用空间的程序是怎么跑到该内核空间的模块呢。简单说就是,用工具链编译含有浮点运算的文件时,没有指定用软浮点,所以遇到浮点运算的时候还是将其编译成浮点运算指令。但是,编译生成的执行文件最终在执行到浮点运算指令的时候就有问题了。因为芯片没有FPU,所以浮点指令对于芯片来说是属于不认识或者叫不支持的指令,那么他就会产生一个异常。内核在初始化的时候为这个异常设置了异常处理函数,当内核捕捉到这个异常后进入异常处理函数执行。而这个异常处理函数就是内核浮点模拟运算模块的入口。内核将运算的结果再通过寄存器返回给系统空间,这样在应用空间来看的话就好像普通运算一样,没有什么区别。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值