问题标签 [x86]

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 投票
3 回答
578 浏览

.net - Unmanaged x64 assemblies in mixed .NET development environment

What do we do if we have some devs working on 64 bit machines and some on 32 bit machines, but we need to reference unmanaged assemblies that need to be in x86 for half the team and x64 for the other half? Is there a solution besides manually updating the references every time someone on a 64 bit rig gets latest?

0 投票
3 回答
1671 浏览

android - Android:有 PC 端口吗?

安卓可以在x86电脑上运行吗?

0 投票
1 回答
4397 浏览

gcc - 在 gcc 中的 x86 AT&T-Assembler 中复制和调用函数

我在 AT&T 汇编器语法中为 gcc 编写了以下代码

实际上,我想要做的是将函数代码复制to_gen_inner到我用malloc分配的内存中,然后跳转到它。此代码产生分段错误。gdb 说:

我其实不知道为什么。我已经在使用 lcall 和 lret,我读过它被认为是绝对调用,使用 call 和 ret,它也不起作用,同样的错误。

我不知道我做错了什么。有人可以帮我吗?

0 投票
6 回答
278 浏览

.net - .NET 应用程序在 Windows 2008 64 位上的什么模式

我的 .NET 应用程序将如何在 Windows 2008 x64 下运行?作为 32 位应用程序还是 64 位应用程序?这有什么区别吗?

0 投票
3 回答
1906 浏览

c - 截断时的浮点舍入

这可能是 x86 FPU 专家的问题:

我正在尝试编写一个在 [min,max] 范围内生成随机浮点值的函数。问题是我的生成器算法(浮点 Mersenne Twister,如果你好奇的话)只返回 [1,2) 范围内的值 - 即,我想要一个包容性的上限,但我的“源”生成值是从一个排他的上限。这里的问题是底层生成器返回一个 8 字节的双精度,但我只想要一个 4 字节的浮点数,而且我使用的是默认的 FPU 舍入模式 Nearest。

我想知道的是,在这种情况下,截断本身是否会导致我的返回值在 FPU 内部 80 位值足够接近时包含最大值,或者我是否应该在将最大值乘以之前增加最大值的有效位[1,2) 中的中间随机数,或者我是否应该更改 FPU 模式。当然,或者任何其他想法。

这是我目前使用的代码,我确实验证了 1.0f 解析为 0x3f800000:

如果它有所作为,这需要在 Win32 MSVC++ 和 Linux gcc 上工作。另外,使用任何版本的 SSE 优化会改变这个问题的答案吗?

编辑:答案是肯定的,在这种情况下,从 double 到 float 的截断足以导致结果包含 max。有关更多信息,请参阅 Crashworks 的答案。

0 投票
2 回答
2390 浏览

assembly - x86 是否有一个原子增量来保留存储的值?

我发现lock inc addr,但这并没有保留存储值的副本,甚至在同一个线程中立即读取也可能发生在竞争写入之后。

我发现的最佳解决方案是load//循环inccas

0 投票
7 回答
2600 浏览

x86 - 处理器如何处理条件?

那么,超低级的 IF() 是什么样的,x86 处理器如何处理它?

0 投票
2 回答
898 浏览

assembly - EMMS指令执行时间?

我正在阅读The Art of Assembly: The MMX Instruction Set",在执行了一些 MMX 指令后,EMMS需要执行该指令来重置 FPU。它指出 EMMS 指令很慢。

但是,当我分析EMMS执行时间以查看它有多慢时(RDTSC用于计算时钟周期),它似乎在 0 个周期内执行。

这是怎么回事?我是不是在某个地方犯了错误,还是 Art Of Assembly 已经过时了?

0 投票
2 回答
29999 浏览

pointers - dword ptr 用法混乱

如果我们使用汇编语言

那么就是复制ebx指向的值(ebx包含的是地址值,不是实际值,这条指令复制的是地址中的实际值)?

如果我们使用

那么这意味着将变量“some_variable”本身的值复制到eax,而不是复制变量“some_variable”指向的值?

我的理解正确吗?

如果是,我很困惑为什么相同的汇编指令有两种不同的含义——在第一种情况下有一个间接级别,但在第二种情况下没有额外的间接级别。

任何意见?

编辑:

并非每个 [] 都不会产生任何影响,例如,指令 xchg 将采用一个间接级别,它加载 edx 指向的值。

可以从以下位置找到完整的源代码,

http://www.codeproject.com/KB/threads/spinlocks.aspx

0 投票
5 回答
62694 浏览

performance - 每条汇编指令需要多少个 CPU 周期?

我听说网上有英特尔的书,它描述了特定汇编指令所需的 CPU 周期,但我找不到(经过努力)。谁能告诉我如何找到CPU周期?

这是一个例子,在下面的代码中,mov/lock 是 1 个 CPU 周期,xchg 是 3 个 CPU 周期。

顺便说一句:这是我发布的代码的 URL:http: //www.codeproject.com/KB/threads/spinlocks.aspx