问题标签 [instructions]
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.
x86 - SSE指令:字节+短
我有很长的字节数组需要添加到类型short
(或int
)的目标数组中。是否存在这样的 SSE 指令?或者也许他们的设置?
assembly - PC 汇编语言 (Paul Carter) - 关于 JO 和 JE 的 Prime.Asm 示例帮助
C代码:
汇编代码(NASM):
如您所见,我用**标记了两条指令。
首先,MUL 指令将 EAX*EAX 相乘并将值存储在 EDX:EAX 中,如果它太大而无法容纳 EAX,对吧?然后程序检查溢出。那么当值太大而无法适应 EAX 时,系统会检测到溢出并设置 OF=1?为什么?如果需要,该值是否不会同时存储在 EAX 和 EDX 中?
其次,JE指令。评论解释说:如果!(猜测%因子!= 0)。
当程序从那里跳转时没关系:
但是如果跳转是因为溢出检查,或者如果 !(factor*factor < 0)?会好吗?正在比较哪些值?它只是检查ZF?但是它之前不是因为另一个原因(另一个指令)而修改过的。
在此先感谢您的帮助。
assembly - avx sqrt的三个操作数?
为什么 avx sqrt(非压缩)指令有三个操作数?
这是否意味着类似的东西xmm1=xmm2=sqrt(xmm3)
?
编辑:下面的详细答案,但简而言之,装配线意味着:
c - x86 指令缓存如何同步?
我喜欢例子,所以我用c写了一些自修改代码......
...显然有效:
但老实说,我根本没想到它会起作用。我希望包含的指令c[2] = 0
在第一次调用时被缓存c
,之后所有连续调用c
都会忽略对的重复更改c
(除非我以某种方式明确地使缓存无效)。幸运的是,我的 cpu 似乎比这更聪明。
c
我猜每当指令指针进行较大的跳转(如上面对 mmapped 内存的调用)时,cpu 都会将 RAM(假设甚至驻留在 RAM 中)与指令缓存进行比较,并在缓存不匹配时使缓存无效(全部?),但我希望能得到更准确的信息。特别是,我想知道这种行为是否可以被认为是可预测的(除非硬件和操作系统有任何差异),并且可以依赖?
(我可能应该参考英特尔手册,但那东西长达数千页,我往往会迷失其中......)
assembly - NASM 生成的列表文件中操作码中的括号是什么意思?
查看由 NASM 生成的列表文件时,我看到有三种操作码:
- 没有括号。
- 带圆括号。
- 带方括号。
他们是什么意思?什么时候使用它们?
这是一个展示上述所有内容的列表文件示例:
assembly - 如何使用十六进制编辑器更改指令?
我在搞一些逆向工程,但我不知道如何使用十六进制编辑器将 jnz 更改为 jz。我知道它会因系统而异,但我不确定在哪里可以找到这些信息。我正在使用 Mac OS X 64 位,并使用 IDA Pro 反汇编代码。
caching - 处理器的指令在哪里?在 CPU 缓存中还是?
我的问题是关于 CPU 及其指令的。我知道它们必须存放在某个地方,所以我想知道它们存放在哪里?我想在缓存中...
linux - 在 ubuntu 中监控正在运行的程序的指令?
我有点卡在这里。
这个想法是我想获得一个程序在执行期间运行的每条指令的文件。我想只用手中的可执行文件(无源)来完成它,并且能够确定什么时候在什么地址上发生了什么操作。
例如,我希望能够在 Google Chrome、Firefox 等上运行它。
我想将它用于我正在研究的性能预测系统。我想如果我能够获得在系统 1 上按顺序执行的每条指令,我可以尝试模拟/建模在系统 2 上运行的相同程序的运行时间,因为我将能够预测(虽然我知道不是 100% 准确)L1/L2 缓存未命中、L1/L2 缓存命中、TLB 命中/未命中、页面错误、浮点乘法运算所花费的时间等。
我想尝试在两个不同的系统上执行此操作:
系统 1:基于 Intel Core 2 Duo CPU 的 Ubuntu 10.10
系统 2:Ubuntu 12.04 在系统上使用 2x AMD 十六核 Opteron 型号 6274
(我绝对可以根据需要更改操作系统,但如果可能的话,我更愿意继续使用 Ubuntu)
这可能吗/我该怎么做?我知道调试器,您可以使用它们来逐步执行所有操作,但我没有可用的源代码。
assembly - 获取后测试为 0
嘿,我有一段对我来说没有意义的汇编代码
起初我对test eax,eax
和jz
跟随 a感到困惑gets
。
“为什么任何输入都是0?”。然后我想“好的。字符串由一个空字节终止,所以一个空字符串应该导致测试设置 ZF”
但是当我在实践中对其进行测试时,jz 从未被使用过。即使我只是在提示符下按回车。
我的错误在哪里?
emulation - 指令集模拟器指南
我有兴趣为 gameboy 和其他手持控制台编写模拟器,但我读到的第一步是模拟指令集。我在这里找到了一个链接,上面说初学者可以模拟 Commodore 64 8 位微处理器,问题是我对模拟指令集一无所知。我知道 mips 指令集,所以我想我可以理解其他指令集,但问题是模拟它们意味着什么?
注意:如果有人可以为我提供初学者指令集仿真的分步指南,我将不胜感激。
注意 #2:我打算用 C 语言编写。
注意#3:这是我第一次尝试学习整个仿真。
谢谢
编辑:我发现这个网站是一个详细的分步指南来编写一个看起来很有希望的模拟器。我将开始阅读它,并希望它对其他正在研究编写模拟器的人有所帮助。