问题标签 [fpu]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
330 浏览

assembly - 在 x87 FPU 中简单添加单精度浮点数

我正在编写一个小型汇编程序,它采用两个单精度浮点数,将它们相加并显示结果。但是,我希望将结果保存在寄存器中以备后用。为了帮助我开始,我将一个 c++ 程序编译成一个汇编程序,并尝试对其进行编辑。但是,我不明白我得到的结果如下:

s首先,关于浮点数,这意味着 32 位和64 位,我是否正确l?其次,为什么将 32 位浮点值弹出到28(%esp)中,只是为了将其存储回数据寄存器堆栈中?删除这两行会导致结果不太精确,这很奇怪。最后,它再次弹出数据寄存器堆栈,但这次是 64 位值。我想要一个单精度 32 位值。但是,更改ls导致我得到 0。有人知道到底发生了什么吗?

0 投票
1 回答
676 浏览

assembly - About x87 FPU precision

In the Intel IA-32 software developer manual. It says that bit 8 & 9 of x87 FPU control word determines the precision of floating-point calculations. The default precision is double extended precision. After the instruction "FINIT" is executed, the precision is set to double-floating. The problem is that, after "FINIT" is executed, x87 FPU use only 64 bit of the 80-bit data registers to calculate. And the FPU can't accept(output) double-extended precision floating value from(to) memory. Is this right?

0 投票
1 回答
8762 浏览

math - stm32 arm 上的 sqrt 功能不起作用

我正在使用带有 FPU 的 stm32f4 芯片(cortex-m4)和

sqrt( 9.7 * 9.7 ) 返回 94.17..

我正在使用 arm-none-eabi-gcc 编译器,编译时没有任何错误。

我的 makefile 真的很长,因为相同的文件用于 stm32f4 和 sam4 芯片。我什至不知道要发布的相关部分。任何帮助表示赞赏。

编辑:来自makefile的一些标志配置

这是我的确切代码:

DEBUG 宏打印到 usb_cdc 接口和 LCD 屏幕上的调试日志。此外,我一直在覆盖 Wdouble-promotion,现在在 DEBUG 行(调用 snprintf __VA_ARGS__)上收到双重提升警告。我认为这无关紧要。

我将优化级别更改为 0(使用 sqrt 仍然得到相同的结果),这是 .lss:

这是与 -O2

0 投票
2 回答
1174 浏览

delphi - Delphi 64位asm编译错误

以下函数不能用 64 位 Delphi XE2 编译器编译。(错误都与fld说明有关。)

第 12 和 13 行:

第 20 行:

不幸的是,我没有组装技能,我正在使用需要移植到 64 位的第三方代码。你能帮我让它在 32 位和 64 位上都工作吗?

0 投票
2 回答
2290 浏览

c - 没有 FPU 的处理器中的浮点计算

是否可以在没有浮点单元的嵌入式处理器中执行浮点运算?

0 投票
2 回答
450 浏览

assembly - fstp 命令的使用

我有一个问题:假设我的浮点单元堆栈如下:

执行此指令后:

我的预测是该单元会将 st(0) 发送到 st(1) (堆栈上的情况将是1.5;1.5;2.5;0 etc)然后弹出堆栈的顶部,因此情况将是1.5;2.5;0 etc.

相反,我看到以下内容:

我的问题是,为什么st(7)发生了变化,我怎样才能达到预期的结果。谢谢你的帮助!

0 投票
1 回答
355 浏览

visual-studio - 使用 Visual Studio C++ 的汇编语言如何声明浮点数?

我这里有我的代码,但我不知道如何声明、输入和输出浮点型数字。在 c 中,%f 用于浮点数。我在我的代码中尝试过,但它不起作用。我也试过 REAL 8。这是我的代码。我知道 %d 是整数,但是当我使用 %f 时,输出是 0.000000 我无法输出确切的答案。

0 投票
1 回答
1730 浏览

assembly - 如何在汇编中获得 16 字节对齐的地址

我必须将浮点寄存器保存到堆栈中。
我尝试使用 fsave 指令。
我执行以下操作:

但作为参数 fsave 使用 16 字节对齐的地址。

我不知道如何使 %esp 中的地址对齐 16 字节。

0 投票
1 回答
335 浏览

assembly - FBSTP 存储错误值

我正在编写一个计算 arctan 函数的程序。
可以正常工作的功能,但是当我尝试获取 bcd-value fbstp 命令存储奇怪的值和 fstp 存储正确的值时。

在 tmp_val: 0x3f490edb (0.785383)
和结果在内存中执行后: 0x0000000000000000001

我为 DOS 写这个

0 投票
2 回答
908 浏览

linux - 从 x86 函数(x87 的 flds/fstps)返回时,信号 NaN 已损坏

我对 x86(32 位)linux gcc 有奇怪的行为。我使用 gcc 的内置生成信号 NaN __builtin_nansf(""),生成 0x7fa00000。从函数返回这个值作为浮点数后,它被修改为 0x7fe00000。有一个简短的例子:

用 编译的程序gcc-4.6.2 program.c,其输出:

数据库:

为什么我的信号 NaN 被修改了?如何防止这种修改?