【问题标题】:Fixed point aritmetic in MIPSMIPS 中的定点算法
【发布时间】:2017-04-19 07:43:23
【问题描述】:

我需要在 MIPS 汇编中实现一些代码,特别是使用定点算法。我错过了什么还是那里没有这样的东西?如果它不是 MIPS 的一部分,我如何使用整数实现定点,即 add/sub/mul/div?

【问题讨论】:

    标签: assembly mips fixed-point integer-arithmetic


    【解决方案1】:

    要实现定点算术代码,您只需要处理器支持整数算术。当然有些处理器可能有一些优化定点代码的指令,但这不是强制性的。

    对于任何定点代码,您首先需要确定表示数字的整数和小数部分所需的位数,然后您将使用执行加法、减法、乘法和除法的普通指令执行您的定点操作。

    在这篇关于Q format 的维基百科文章中,您将找到 Q 表示法的概念以及如何基于此概念进行基本的不动点运算。本文中的代码示例是用 C 编写的,但您可以使用 MIPS basic arithmetic instructions 进行相同的操作。

    【讨论】:

      【解决方案2】:

      MIPS 是 32 位,您可以按照自己的意愿排列 with 和数字的小数部分 fixed<w,b> 。可以隐式调整二进制点。 addsub 使用简单的数学运算,对于 mul/div 可以使用指令 sllsrl

      这是一个很好解释的链接。

      http://www-inst.eecs.berkeley.edu/~cs61c/sp06/handout/fixedpt.html

      【讨论】:

      • @ArekBulski 与 mul/div。 Mul 创建更多小数位(只需计算数学),因此您可能想在之后右移(同时从高半部分移入), div “用完”小数位,因此您可能想要左移(也许进入新的高点)一半)在它之前。但并非总是如此,您可以在进行过程中任意更改格式,并且在 mul/div 对中,格式更改通常会取消。
      猜你喜欢
      • 1970-01-01
      • 2021-04-15
      • 2016-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多