【问题标题】:int divide float in assembly [closed]装配中的int除法浮点数[关闭]
【发布时间】:2016-05-19 20:08:29
【问题描述】:

alghoritm

code

我在assemble中编写实现Shell sort。我的问题是这个代码的结尾。我在 EAX 中有号码,我想这样做。 EAX=EAX/2,2

【问题讨论】:

  • 看来你的帖子主要是代码;请添加更多细节。 ://
  • 我知道,但是当我想添加我的代码时。抛出错误消息“看起来您的帖子主要是代码;请添加更多详细信息”
  • 我将我的代码添加到链接中我想在标签中分开
  • 是否需要完全是2.2?如果2.2069 足够接近,您可以使用imul eax, eax, 29 / shr eax, 6 实现这一目标
  • “看起来你的帖子主要是代码;请添加更多细节” 这是一个强烈的暗示,你不应该发布仅包含代码转储的问题一个标题,你应该花一些时间写一个更好的问题。

标签: assembly divide


【解决方案1】:

我没有阅读你的代码,因为你甚至懒得把它放在你的问题中。


整数近似值可能是您最好的选择,请参阅 Michael 的评论。否则使用 SSE:

cvtsi2ss   xmm0, eax
divss      xmm0, [a_float_constant]
cvtss2si   eax, xmm0

如果您想要截断而不是四舍五入,请使用 cvttss2si。


或者使用 x87:

push eax, fld 2.2 来自常数, fdivr [rsp]st(0) = (double)eax/2.2。完成后不要忘记修复堆栈。

请参阅 标签 wiki 以获得指向 insn 集手册的链接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-09
    • 2012-09-19
    • 2015-02-06
    • 2020-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    相关资源
    最近更新 更多