问题标签 [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 回答
560 浏览

assembly - V***和F***浮点ARM指令有什么区别?

以V开头和以F开头的ARM VFP指令有什么区别?

为什么 ARM 信息中心不再列出汇编参考中的 F 指令?

它们中的大多数直接相互映射(例如,vcvtr.s32.f32ftosis),那么为什么它们都存在呢?

例如,这些函数做同样的事情(flooring float->int 转换):

0 投票
1 回答
216 浏览

assembly - 什么是 SSE 相当于 fstp?

如果我弄错了,请纠正我,但是 fstp 从 FPU 堆栈顶部弹出值,例如 st0?

即 fstp 第二 [rsp]

如果我在 SSE 寄存器 xmm0 中有值,那么等效值是多少?我想打印存储在寄存器中的值。

0 投票
1 回答
1352 浏览

assembly - FASM 汇编如何在 64 位程序中使用 FPU

我在 FASM 中有这段代码,它使用在 32 位程序中运行良好的 FPU 计算测量值。我将如何转换它以便它可以在 64 位程序中运行。当我在 64 位程序中使用此代码时,它给了我 0.00000 而不是像 54.24457 这样的数字

谢谢

0 投票
1 回答
181 浏览

ubuntu - 为什么我没有从 NASM 中的 FPU 得到 100 的平方根 10?

我正在尝试了解 NASM Assembly 中针对 Ubuntu 中 32 位程序的浮点操作。

我有兴趣得到一个数字的平方根。这是我尝试过的:

我原以为EAX是 10。但 GDB 说它是0x1be24630( 467813936),顺便说一下,我不确定如何转换为更易读的东西 - 但我认为如果结果是 10,它实际上会显示为 10 , 不?

我在这里做错了什么?或者0x1be24630实际上是10?

0 投票
1 回答
905 浏览

cpu - Intel Xeon E5430 有多少个 FPU?

我正在研究使用 gotoblas 库在一个 CPU 周期内可以完成多少次 FLOP。我使用 32 位浮点数来运行矩阵乘法,并通过手动计算在每个 CPU 周期得到大约 8 次 FLOP。我想这可能是因为我的处理器(Intel Xeon E5430)中有两个 FPU,每个 FPU 都处理 128 位 XMM 寄存器上的一条 SSE 指令。因此,使用 32 位浮点数,每个 CPU 周期我得到 2*4 FLOP。

我的猜测正确吗?有没有我可以参考的官方手册来获取一个英特尔处理器中的 FPU 数量?

谢谢!

0 投票
4 回答
2731 浏览

assembly - 释放 x87 FPU 堆栈 (ia32)

在我的大学里,我们刚刚被介绍到 IA32 x87 FPU。但是我们没有被告知如何清除 FPU-Stack 中不再需要的元素。

假设我们正在执行一个简单的计算,例如 (5.6 * 2.4) + (3.9 * 10.3)。

问题是:在弹出保存计算结果的 FPU 顶部元素之后。如何从现在剩余的新顶部元素中释放 FPU 的堆栈,该元素包含 (5.6*2.4) 的结果。

我能想象的唯一方法是释放更多的程序堆栈并从 FPU 的堆栈中弹出元素,直到删除所有不再需要的元素。

有没有办法直接操作顶部指针?

0 投票
1 回答
2833 浏览

floating-point - 汇编 IA32:将 4 字节浮点数从堆栈移动到 FPU

在我的大学,我们被介绍到使用 AT&T 语法的 IA32/x86 汇编程序。但解释缺乏重要信息。

如何将 4 字节浮点数从堆栈移动到 FPU?我尝试使用 flds 但它没有按预期工作......

示例代码:

但输出是:

结果:-0.491594

而不是预期的 12.412 ......

[编辑:] 有趣的事实。令人惊讶的是,每次执行程序的结果都会发生变化。

0 投票
2 回答
671 浏览

visual-c++ - _control87() 是否也设置 SSE MXCSR 控制寄存器?

注释的文档_control87

_control87[...] 影响 x87 和 SSE2 的控制字(如果存在)。

看起来 SSE 和 SSE2 MXCSR 控制寄存器是相同的,但是,文档中没有提到 SSE 单元。是否_control87会影响 SSE 单元的 MXCSR 控制寄存器,还是仅适用于 SSE2?

0 投票
1 回答
358 浏览

linux-kernel - 我们可以在中断上下文中使用 FPU 吗?

在 Linux 内核中使用 FPU 假设 FPU 块包含kernel_fpu_beginkernel_fpu_end功能。第一个看起来像这样:

如果 FPU 由于以下原因无法使用,内核会发出警告:

那么,我们不能在中断上下文中使用 FPU 是对的吗?

如果是,我想知道为什么我们不能?

0 投票
0 回答
190 浏览

floating-point - 在 NASM 中使用 atof

我正在尝试在 NASM 中实现一个简单的程序,该程序从命令行参数中接收未知数量的浮点值,并将它们加在一起。这似乎对我不起作用,我认为这可能是因为我错误地使用了 atof 调用。我在 atof 调用后输出浮点数以查看它们是否有效,但我没有得到我输入的数字。此外,我什至没有得到这些打印数字的总和,所以那里也有问题。我一直在寻找类似代码的示例,但遗憾的是,NASM 的在线文档几乎没有 Java 之类的文档。

这是我的代码:

示例输入/输出:

在:4 7 8 9

输出:0.0 0.0 0.0 0.0,总和 0.0

在:7.3 6.9

输出:0.0 -0.0,总和 272008302207532160516096.0

在:8.8 6.3 3.98

输出:-0.0 0.0 0.058750,总和 -230215375187831947264.0