问题标签 [x87]
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.
.net - 为什么 .NET 使用 SIMD 而不是 x87 进行并非 SIMD 固有的数学运算?
这是一个好奇的问题,比什么都重要。我正在查看此代码反汇编(C#,64 位,发布模式,VS 2012 RC):
...并发现编译器在这里没有对日志使用 x87 指令(Power 使用日志),这很奇怪。当然,我不知道调用位置的代码是什么,但我知道 SIMD 没有 Log 功能,这使得这个选择更加奇怪。此外,这里没有任何东西是并行化的,那么为什么是 SIMD 而不是简单的 x87?
顺便说一句,我还发现没有使用 x87 FYL2X指令很奇怪,该指令专为第一行代码中所示的情况而设计。
任何人都可以对此有所了解吗?
assembly - 在 LLVM 中调用 fsincos 指令比调用 libc sin/cos 函数慢?
我正在研究一种用 LLVM 编译的语言。只是为了好玩,我想做一些微基准测试。一方面,我在一个循环中运行了数百万次 sin / cos 计算。在伪代码中,它看起来像这样:
如果我使用以下形式的 LLVM IR 内联汇编计算 sin/cos:
这比分别使用 fsin 和 fcos 而不是 fsincos 更快。但是,它比我单独调用llvm.sin.f64
andllvm.cos.f64
内部函数要慢,后者编译为对 C 数学库函数的调用,至少在我使用的目标设置下(启用 SSE 的 x86_64)。
似乎 LLVM 在单/双精度 FP 之间插入了一些转换——这可能是罪魁祸首。这是为什么?抱歉,我是大会的相对新手:
与调用 llvm sin/cos 内在函数的相同测试:
您能否建议使用 fsincos 的理想装配是什么样的?PS。向 llc 添加 -enable-unsafe-fp-math 会使转换消失并切换到双精度(fldl 等),但速度保持不变。
assembly - 为什么 Intel x87 寄存器是 80 位宽的?
为什么使用如此“奇怪”的寄存器大小?是否有任何文档说明为什么这些寄存器不宜使用 64 位或 128 位?
performance - 将 fpu 切换为单精度
在 fpu 切换到单精度模式前几年,我在旧 fpu 上读到过,除法和 sqr 的速度是正常模式下的两倍。
(检查它的来源http://stereopsis.com/FPU.html)
还是这样,这样的切换可以加快一些循环,在里面产生很多浮点代码?
第二个问题相关,例如,在执行系统(winapi)调用时,我可以在代码中自由地玩弄 FPU 精度吗,与 fpu 舍入模式和系统端相同,api 是否也会破坏我的设置?
assembly - 如何在 asm(x87) 中查看并放入数组
我有一个任务 - 计算函数的 6 个结果 (Y = (20 * x) /(5 * x2 – 8,5)) x - 从 1 开始,每次计算必须增加 4 (1, 5, 9 .. )。
我写了一些代码,但我不明白如何制作循环并将数据放入数组。所有操作都必须在 asm 上 - 循环并放入数组,1 次迭代 - 数组中的 1 个元素
有我的代码:
}
assembly - sin() 的总和结果为 asm(x87)
我需要计算y(i) = sin(5*i)
度数的总和,i
每次迭代都会增加。我需要在总和大于 3 之前计算总和,并找出i
总和何时更大。
使用下面的代码,我得到一个无限循环:
assembly - 为什么循环在 asm(x87) 中失败
我在循环中的 asm 中有一些计算,它必须在 Sum 为 3 之前,但循环一直工作并且永无止境。这是mu代码:
assembly - fpu 状态 (x87)
我正在搜索有关可以将多少值视为当前 fpu 状态的一部分的信息(我的意思是浮点代码计算所依赖的值)我知道这将是 3 种精确模式,4 种舍入模式,大约 5与 fpu 异常相关的位标志,但还有什么?tnx
assembly - sinus 是可扩展的吗?
sinus 我的意思是 c stdlib sin() / fpu assembl;y fsin。
我可以给这个正弦参数大约 16 个十进制数字或更多,例如 sin(1.1e-14); sin(1.2e-14) 然后得到结果,
sinus 在如此小的增量上几乎是线性的,但尽管它也可以以相同的 16 位精度计算,它是否也可以在如此小的增量上精确计算?
(我问这个问题是因为在一段时间内我似乎有点不寻常,因为它在论点和特别是输出值方面都如此精确地计算出来,所以我想知道它是否没有被削减或什么的)
assembly - 使用 FFREE 和 FDECSTP
我无法理解这些事情:这些命令(FFREE、FDECSTP)有什么用?它可以用来从 fpu 堆栈中弹出值,还是出于其他目的?我不明白:/有人可以解释一下吗,tnx