【问题标题】:Implementing MIPS instructions for an absolute value function为绝对值函数实现 MIPS 指令
【发布时间】:2014-11-17 21:35:31
【问题描述】:

这学期我在 EE 课上真的很挣扎,我的教授通过 MIPS 指令就像我们精通它一样!我试过这本书、谷歌、YouTube、辅导和与学生交谈,但要么没有意义,要么他们没有足够的信心提供帮助。

我真的对如何开始编写代码几乎没有信心。我已经设置好了,但不知道该怎么做。我会提供问题,并在收到帮助时更新我的​​信息。

问题:

"只使用 MIPS 整数指令,编写一个函数 x = abs(y) 其中 x 和 y 是浮点数。 你的功能 只需要正确处理正常的浮点值,而不是 NaN 等。"

作品中的尝试:

(还没有取得进展:()

####
#
# Float absolute value
#
# x = abs(y)
# 

.text
.globl myabs

myabs:

    li $t0,y    #register t0 = y
#   more code..
#

    jr  $ra     # return

如果有人能提供一些好的参考资料、提示、建议、意见、提示或任何东西,我将不胜感激!谢谢。

【问题讨论】:

    标签: function assembly mips absolute-value


    【解决方案1】:

    所以,ieee754。
    阅读一下。
    想一想。
    意识到它是有符号的。
    在 MIPS 上,符号位在字中与整数中的最高有效位处于相同位置。

    load float as integer x
    AND x with 0x7fffffff
    store x as float
    

    【讨论】:

    • 我刚读了一些关于它的东西,但似乎你可以用 ieee 754 做很多事情。与具体的事情如何得到相比,我的问题似乎相当模糊。 32位无符号整数不是6个位置吗?那么不会签名是 7 吗?
    • 我不知道你所说的“职位”是什么意思。 float 通常是 32 位,int 通常是(但不总是)32 位。整数数据类型的unsigned 版本与signed 版本的大小相同(这就是为什么unsigned-types 可以表示大约是signed 类型可以表示的最大值的两倍)。
    • 就像你说的第二行,我不太明白 :( 我把它看成二进制的。所以从最不重要的 f 开始,我一直认为 7 在 128 中位置。
    • 对不起。我不打算在这个评论部分解释二进制。去读一本书,或者在网上浏览一下解释。
    • @Habit: en.wikipedia.org/wiki/Binary_number 这应该给你一个起点。此外,en.wikipedia.org/wiki/Two's_complement 有助于理解。
    猜你喜欢
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    相关资源
    最近更新 更多