如何在运行时x86汇编程序中动态计算浮点数

时间:2013-08-03 00:31:37

标签: assembly floating-point x86

在运行时如何使用x86汇编程序中的单精度浮点数。我知道您可以使用.float汇编程序指令在编译期间包含静态浮点数,但是如何处理用户在基数10中输入浮点数并在代码中使用它。

我已经完成了过去两天的一些阅读并将基数10浮点数转换为指数和Massisia是有道理的,但我实际上必须编写一个函数来来回转换它们以使用它们与floperators(浮动点运算符,如fadd,fdiv)。

如果是这样我想我必须把它吸干并创建两个函数来回从十进制到指数质量十六进制。

如果没有针对我的操作或说明吗?如果是的话他们是什么,或者你是否可以将我链接到他们的文档页面。

感谢您的时间,希望这篇文章有道理。

2 个答案:

答案 0 :(得分:2)

许多C编译器(包括gcc)都可以选择生成汇编语言。虽然不容易,但在C语言中编写这类内容并使用编译器获取汇编语言然后根据需要进行调整就不那么困难了。

注意非规范化数字和带符号的零。他们可能需要特殊处理。

您可以像汇编语言一样研究C中至少涉及的方法。在汇编语言中,由于所有杂乱的细节,很难看到全局。除非你绝对别无选择,否则我不会尝试用汇编语言直接写这样的东西。

答案 1 :(得分:1)

如果您正在谈论用户输入 - 那么答案很明确。用户无法输入浮点数。用户始终输入字符串。 (或者甚至更确切地说 - 用户总是输入击键,但无论如何,任何体面的操作系统都会将这些转换为字符串)

因此,您始终必须将字符串转换为数字 - 整数,浮点数或任何其他格式。

大多数高级语言都会使这种转换调用变得透明,但在汇编语言中,您必须明确地使用它们。

另一个话题是您要使用的转换功能。这取决于您的目标和运行环境。您可以自己编写这些功能。或者使用标准C或任何其他语言功能提供的这些功能。或者使用OS提供的库。