问题标签 [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.
c-preprocessor - 如何使用 autoconf 为#define 指定一个值?
我正在尝试通过定义宏SYSV386_COMPAT 0
来改变它生成一些 FPU 操作码的方式来构建具有解锁行为的 Gnu binutils。
我可以轻松地进入头文件并手动设置值,但我将如何调用配置脚本以#define SYSV386_COMPAT 0
在命令行上指定等效项?如果可能的话,我宁愿在命令行上指定一些东西(只是因为该功能是可传递的,我认为我不应该破解源代码)。话虽如此,我已经尝试阅读至少一些 FM,但没有AC_DEFINE(SYSV386_COMPAT, 0)
在其中一个binutils/configure.in
or中插入一个运气gas/configure.in
。
assembly - 除法 8086/8087 1/3 =3?
我在使用时遇到了很大的问题fdiv
!!!!我正在尝试划分1/3
,所以这就是我所做的
如您所见,我将结果移至,resultado
因为我看不到结果st(0)
(我正在使用 tasm,所以我只能在调试器中看到变量)结果应该是3EAAAA3A
但我得到了40400000
......那是3
!!!这怎么可能??我尝试交换变量,但什么也没有!!!你能帮助我吗??=(
assembly - FILD 和 FSTP 是如何工作的?
我在网上搜索过,到处都是:FILD 将整数的二进制补码转换为 80 位扩展精度浮点数,并将其放在浮点数堆栈的顶部。所以,我有一个程序可以做到这一点,但我得到的结果是出乎意料的。
示例:我在内存中有数字 0xFF20A810(假设在 0x40000000 中) fild [0x40000000] fstp [0x40010000]
我得到的结果是 0x41EFE41502000000。数字是如何转换的?我正在使用它的crackme中间,但我找不到解决方案。
谢谢
c - 给定浮点数时如何避免FPU?
好吧,这根本不是一个优化问题。
我正在编写一个(目前)简单的 Linux 内核模块,我需要在其中找到一些位置的平均值。这些位置存储为浮点(即float
)变量。(我是整件事的作者,所以我可以改变这一点,但我宁愿保持浮动的精确性,如果可以避免的话,不要参与其中)。
现在,这些位置值存储(或至少习惯于)在内核中只是为了存储。一个用户应用程序写入这些数据(通过共享内存(我使用的是 RTAI,所以是的,我在内核空间和用户空间之间有共享内存)),而其他应用程序则从中读取数据。我假设从浮点变量读取和写入不会使用 FPU,所以这是安全的。
安全,我的意思是避免在内核中使用 FPU,更不用说某些系统甚至可能没有 FPU。我不会使用kernel_fpu_begin/end,因为这可能会破坏我的任务的实时性。
现在在我的内核模块中,我真的不需要太多的精度(因为无论如何位置都是平均的),但我需要它达到 0.001。我的问题是,如何在不使用 FPU 的情况下将浮点数转换为整数(原始数字的 1000 倍)?
我考虑过手动从浮点数的位模式中提取数字,但我不确定这是否是个好主意,因为我不确定字节序如何影响它,或者即使所有架构中的浮点都是标准的。
assembly - 组装 FPU 堆栈断裂;导致 -1.#IND
一般来说,我对组装很陌生,尤其是对 FPU 的使用。
我正在为学校写一个计算随机数数组的标准偏差的作业。
数组已加载,平均计算工作正常。整个过程适用于 7 个值或更小的数组,但返回 -1.#IND(这意味着 NaN?)对于 8 个或更多元素的数组大小。
循环中发生了一些事情,对 (mean - element)^2 值求和。我不确定发生了什么,但我假设 FPU 堆栈以某种方式中断。
如果有人能指出我正确的方向,我会非常高兴。
fla = REAL8
gcc - 调试器在具有浮点参数的数学函数内停止
我正在使用Keil uVision
编译gcc
器(ARM EABI 的 Sourcery Codebenchlite )对STM32F4 cortex M4
芯片进行编程。
我设置的编译器控制字符串是:
当调试器遇到一些数学函数(例如asinf()
,atan2f()
等)时,它会停止。
我检查过这些函数的参数也是单精度的。
我认为这是因为缺少一些使用VFP
浮点的编译器指令,但无法识别它。
有什么我错过了吗?
我做的一个例子的反汇编代码:
调试器可以评估 atan2f(0.3,0.4),但在评估 atan2f(a,b) 时会在 0x0803B9CA 处停止。不知道为什么数字有效但变量无效。
gcc - 具有硬件浮点支持的 GNU ARM 工具链
我已经开始研究 STM32F4 Discovery 板,并使用包含 GCC 4.6.2 的最新 Yagarto 工具链编译并运行了一些基本程序。最近,虽然在几个论坛上,我读到包括最新的 Yagarto 在内的许多工具链在使用板载硬件 FPU 时都存在问题。我还读到最新的 CodeSourcery 工具链确实支持硬件浮点,但在精简版中不支持!!
在深入研究该主题时,我发现了这个专门用于 ARM Cortex M/R 控制器的工具链,并声称在硬件 FPU 方面没有问题。
https://launchpad.net/gcc-arm-embedded
我想从用户的经验中知道,Yagarto是否真的存在硬件FPU问题?我对使用 Yagarto 很感兴趣,因为我也在 ARM7 上工作,并且 yagarto 也支持它。因此,与其为不同的架构使用不同的工具链,不如为 ARM7 和 Cortex M/R 提供一个工具链。
如果确实存在 FPU 问题,那么任何人都可以建议我为 ARM7 和 Cortex M/R 提供一个经过验证的良好工具链吗?
PS:我为 BeagleBoard (Cortex A-8) 使用 CodeSourcery 最新的 GNU Linux 工具链,还没有遇到任何问题。
assembly - 如何在 x86-64 汇编中使用浮点数?
我正在为一些 x86-64 程序集而苦苦挣扎,浮点数让我头疼。例如,当我运行此代码时:
这个函数是从这样的 C 代码中调用的:printf("%Lf \n", func() );
不幸的是,结果是一些奇怪的数字......我尝试使用 将两个整数相加FIADD
,它工作正常。我已经翻阅了大量的材料,但也许这里有人可以指点我体面的 FPU 教程,或者分享她/他的经验和智慧:)
总结要点:
- 语言:x86-64 汇编器
- 汇编程序:从存储库安装的 nasm v. 2.09.04
- 编译器(用于 C):gcc v. 4.5.2(随 Ubuntu 安装)
- 操作系统:Oracle VM 上的 Ubuntu 11.04 64 位
- 主机操作系统:Windows 7 SP1 64bit
- 处理器:Intel i5 - 2430M 64bit(检查两次:D)
- 问题:FPU 不能添加两个数字 :(
以防万一:最后我希望使用FSINCOS
和其他花哨的 FPU 指令,但看到即使简单的添加也失败了......
提前谢谢大家!
gcc - 使用 GCC(内联汇编器)将 double 加载到 FPU
我一直在尝试使用 GCC 内联汇编将 a 加载double
到 FPU 。FLD
由于不太熟悉 AT&T 语法,也没有在网上找到任何东西,我非常感谢您的帮助。我的意图是加载 to 的地址,a
然后EAX
执行FLD [EAX]
...
assembly - FILD、FSTP 和 FST 组装说明
所以我今天一直在解决这个crackme。除了最后几条指令外,我设法找到并理解了串行生成例程。我决定第一次在汇编中编写一个注册机。一切都很顺利,直到我来到串行例程的最后几条指令。我正在使用 MASM 和英特尔组件(英特尔、AT&T,你怎么称呼这些?)这是我当前的代码:
这是程序本身的实际串行例程:
该例程计算在 EAX 中完成的序列,将其推入堆栈,然后据我了解,使用 FILD 将其推入 FPU 堆栈,使用 FSPT 将其从 FPU 中取出并将其放入 EBP-410, FLD 再次将 EBP-410 推送到 FPU 上,最后使用 FSTP 将其存储到 ESP+8 作为 sprintf 的参数。sprint 和 strcmp 在这里并不重要,但我还是将它们包括在内,这样您就可以更好地了解正在发生的事情。
顺便说一句,这个 LOCAL 194. 是放置格式化字符串的地方。
我在互联网上搜索并找到了这些说明的描述,但没有找到任何可以帮助我将其转移到我的 keygen 的实际示例或材料。
所以最后一个问题是:如何将其转移到我的 keygen 中?我总是收到“程序已停止工作”消息,或者串行框中没有显示任何内容。我的 SerialCalc 例程中的注释内容是我从另一个人的解决方案中扯掉的部分,只是为了尝试它是否可以工作,但不幸的是,它没有。
如果您需要有关问题的更多详细信息或任何额外信息,请告诉我。
我为我的菜鸟道歉!
在此先感谢,Tuntuni。