问题标签 [intel]

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 投票
2 回答
872 浏览

assembly - 如何在 i386 上将“推 2000”从 AT&T asm 转换为 Intel 语法

我正在尝试将以下内容从 AT&T 程序集转换为 Intel 程序集:

现在编译为:

但无论我尝试什么,我都无法在 Intel synax 中得到相同的结果,我尝试过:

所以我没有线索,什么是“pushl 2000”的等价物?

0 投票
1 回答
6474 浏览

assembly - 是否有使用 AT&T 语法的完整 x86 汇编语言参考?

理想情况下,会有一个用 AT&T 语法编写的英特尔软件开发人员手册版本,但我很乐意找到足够接近的任何内容。

0 投票
1 回答
2898 浏览

compiler-construction - 如何禁用英特尔编译器编写的“LOOP WAS VECTORIZED”注释?

我想禁用英特尔编译器编写的“LOOP WAS VECTORIZED”注释。但我不想禁用优化。我需要做什么?

0 投票
1 回答
10421 浏览

syntax - gnu 汇编器:获取标签/变量的地址 [INTEL SYNTAX]

我有这样的代码:

现在我想将 woof 的地址移动到 eax 中。这样做的英特尔语法代码是什么?将 bleh 的地址移动到 ebx 也是如此。

非常感谢您的帮助!

0 投票
2 回答
279 浏览

assembly - 将英特尔寄存器用于其“预期目的”是否会提高效率?

这篇文章声称每个寄存器都有一个预期的目的,更重要的是,

当英特尔的工程师设计最初的 8086 处理器时,他们对每个寄存器都有一个特殊的用途。在设计指令集时,他们根据他们期望每个寄存器执行的功能创建了许多优化和特殊指令。根据英特尔最初的计划使用寄存器可以让代码充分利用这些优化。不幸的是,这似乎是一门失传的艺术。很少有程序员了解英特尔的整体设计,而且大多数编译器过于简单化或专注于执行速度,无法正确使用寄存器。然而,了解寄存器和指令集如何组合在一起是实现轻松大小编码的重要一步。

是否有任何其他来源可以证实这篇文章?如果是这样,我真的很想检查一下。

请注意,我不是在谈论像STOS使用快速操作这样的情况edi- 我只是想知道如果我使用eaxesi作为计数器而不是是否会导致性能下降,ecx或者仅仅是关于可读性?

0 投票
4 回答
392 浏览

optimization - 优化,编译器及其效果

(i) 如果一个程序通过在同一个 CPU 类别(例如 Multi-Core Core i7) 上编译来优化,那么它的性能在老一代的其他 CPU(例如 Pentium 4)上会处于次优水平。 .. 优化可能对其他 CPU 的性能有害..?

(ii) 为进行优化,编译器可能会使用旧 CPU 中不可用的 x86 扩展(如 SSE 4)......那么,是否有回退到旧 CPU 上的一些基于非扩展的例程......?

(iii) 英特尔 C++ 编译器是否比 Visual C++ 编译器或 GCC 更优化?

(iv) 真正的多核线程应用程序能否在较旧的 CPU(如 Pentium III 或 4)上高效运行..?

0 投票
3 回答
427 浏览

assembly - 英特尔处理器的虚拟操作处理

诚然,我有一个有点愚蠢的问题。基本上,我想知道英特尔处理器是否提供了一些特殊机制来有效地执行一系列虚拟指令,即 NOP 指令?例如,我可以想象可能存在某种预取机制来识别 NOPS,丢弃它们并尝试获取一些有用的指令。或者这些 NOPS 是否作为正常指令发送到执行单元,这意味着我每个周期可以大致处理 5 个 nops(假设有 5 个执行单元)

谢谢,莱因哈德

0 投票
3 回答
110 浏览

linux - 绩效评估期间的异常值

我正在尝试使用 Intels RDTSC 进行一些性能测量,我在不同的测试运行中得到的变化很奇怪。在大多数情况下,我的 C 基准测试需要 3000000 个 Mio 周期,但是,完全相同的执行在某些情况下可能需要 5000000 个,几乎是两倍。我尝试不让密集的工作负载并行运行,以便获得良好的性能估计。有人知道这种巨大的时间变化是从哪里来的吗?我知道可能会发生中断和其他事情,但我没想到时间会有如此巨大的变化!

PS.:我在奔腾处理器上运行它,上面运行着 Linux。

感谢您的反馈,约翰

0 投票
2 回答
2147 浏览

c# - 如何使用 C# 确定运行我的程序的计算机的芯片组

我需要我的代码根据运行它的计算机的芯片组表现出不同的行为。如何使用 C# 确定这一点。

特别是英特尔 945 与 965。

0 投票
3 回答
1467 浏览

floating-point - 将 powerpc 移植到英特尔的数字代码使用浮点数给出不同的结果

我的基本问题是如何使 x86 上的浮点运算表现得像 PowerPC,从 Classic MacOS (CodeWarrior) 到 Windows (VS 2008)。

有问题的代码有很多,有一堆算法,这些算法高度迭代并且对数值非常敏感。

典型的复杂线是:

它是使用 typedef'dfloat作为基本类型编写的。

更改为double在两个平台上得到非常相似的结果,但不幸的是这些数字是不可接受的,所以我们不能采取那么简单的方法。

Mac 代码是使用 CodeWarrior 编译的,只是关闭 FMADD 和 FMSUB 指令的生成对创建的数字产生了巨大影响。因此,我的出发点是搜索看起来最相似的 Visual Studio (2008) 选项 - 确保使用了 fused add。我们怀疑关键在于编译器在计算中分配中间存储的行为

目前,通过启用 SSE2 和/fp:fast. 启用内在函数会导致值偏离 Mac 值。

/ fp开关文档说只/fp:strict关闭融合添加行为。

MSDN谈到“在 LIBC.LIB、LIBCMT.LIB 或 MSVCRT.LIB 之前”链接 FP10.OBJ。保证64位精度。我显然已经通过在链接器输入字段上指定 FP10.OBJ 来实现这一点(详细的链接器输出在 MSVCRTD.lib 之前显示它)。

我还通过调用设置了 64 位精度

在 DllMain 中。

请注意,问题不是由于平台之间浮点异常处理的差异,也不是由于 PowerPC 允许除以零整数(仅返回零)的(令人愉快的)方式,因为这些区域已经过审计和解决,非常感谢PC-皮棉。该程序运行并产生了一些看似合理的输出,但还不够好。

更新:

一位朋友的有趣评论: 一种可能是 PPC 有大量临时寄存器,可以存储 64 位中间值,而 x86 代码可能必须卸载和重新加载 FPU(截断到 4 个字节并丢失精度)。

这可能是 SSE2 工作得更好的原因,因为 (IIRC) 它有更多的寄存器和更多的保留中间值的空间。

一种可能性 - 您的代码可以编译为 64 位吗?x64 模式还有更多的中间寄存器,以及更好的 FP 指令,因此在设计和执行上可能更接近 PPC。

正如他所建议的那样,使用 64 位构建的初始测试实际上更接近了(我最初认为它过头了,但这是由于建模设置不正确造成的)。

最终决议

我敢肯定,任何对这个话题感兴趣的人都足够痴迷,他们想知道这一切最终是如何解决的。该软件已完成并提供一致的数字结果。我们永远无法获得所有算法来为 Mac 提供相同的结果,但它们足够接近,可以在统计上接受。鉴于处理是由专家用户选择感兴趣的区域指导的,并且用户输入对模型的进展有部分反应,首席科学家认为这是可以接受的(这不是一夜之间的决定!)。剩余的数字差异完全在决定不同临床结果的范围内,因此在测试中没有看到不同的诊断。