问题标签 [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.
assembly - 在 x87 FPU 中简单添加单精度浮点数
我正在编写一个小型汇编程序,它采用两个单精度浮点数,将它们相加并显示结果。但是,我希望将结果保存在寄存器中以备后用。为了帮助我开始,我将一个 c++ 程序编译成一个汇编程序,并尝试对其进行编辑。但是,我不明白我得到的结果如下:
s
首先,关于浮点数,这意味着 32 位和64 位,我是否正确l
?其次,为什么将 32 位浮点值弹出到28(%esp)
中,只是为了将其存储回数据寄存器堆栈中?删除这两行会导致结果不太精确,这很奇怪。最后,它再次弹出数据寄存器堆栈,但这次是 64 位值。我想要一个单精度 32 位值。但是,更改l
为s
导致我得到 0。有人知道到底发生了什么吗?
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?
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
delphi - Delphi 64位asm编译错误
以下函数不能用 64 位 Delphi XE2 编译器编译。(错误都与fld
说明有关。)
第 12 和 13 行:
第 20 行:
不幸的是,我没有组装技能,我正在使用需要移植到 64 位的第三方代码。你能帮我让它在 32 位和 64 位上都工作吗?
c - 没有 FPU 的处理器中的浮点计算
是否可以在没有浮点单元的嵌入式处理器中执行浮点运算?
assembly - fstp 命令的使用
我有一个问题:假设我的浮点单元堆栈如下:
执行此指令后:
我的预测是该单元会将 st(0) 发送到 st(1) (堆栈上的情况将是1.5;1.5;2.5;0 etc
)然后弹出堆栈的顶部,因此情况将是1.5;2.5;0 etc.
相反,我看到以下内容:
我的问题是,为什么st(7)
发生了变化,我怎样才能达到预期的结果。谢谢你的帮助!
visual-studio - 使用 Visual Studio C++ 的汇编语言如何声明浮点数?
我这里有我的代码,但我不知道如何声明、输入和输出浮点型数字。在 c 中,%f 用于浮点数。我在我的代码中尝试过,但它不起作用。我也试过 REAL 8。这是我的代码。我知道 %d 是整数,但是当我使用 %f 时,输出是 0.000000 我无法输出确切的答案。
assembly - 如何在汇编中获得 16 字节对齐的地址
我必须将浮点寄存器保存到堆栈中。
我尝试使用 fsave 指令。
我执行以下操作:
但作为参数 fsave 使用 16 字节对齐的地址。
我不知道如何使 %esp 中的地址对齐 16 字节。
assembly - FBSTP 存储错误值
我正在编写一个计算 arctan 函数的程序。
可以正常工作的功能,但是当我尝试获取 bcd-value fbstp 命令存储奇怪的值和 fstp 存储正确的值时。
在 tmp_val: 0x3f490edb (0.785383)
和结果在内存中执行后: 0x0000000000000000001
我为 DOS 写这个
linux - 从 x86 函数(x87 的 flds/fstps)返回时,信号 NaN 已损坏
我对 x86(32 位)linux gcc 有奇怪的行为。我使用 gcc 的内置生成信号 NaN __builtin_nansf("")
,生成 0x7fa00000。从函数返回这个值作为浮点数后,它被修改为 0x7fe00000。有一个简短的例子:
用 编译的程序gcc-4.6.2 program.c
,其输出:
数据库:
为什么我的信号 NaN 被修改了?如何防止这种修改?