问题标签 [spectre]

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 投票
1 回答
88 浏览

assembly - 为什么要使用“ret”而不是“call”来调用方法?

在阅读和学习开源操作系统时,我偶然发现了一种在汇编中调用“方法”的极其复杂的方式。它使用 'ret' 指令调用库方法来执行此操作:

我添加评论是为了自己理解它,似乎我是对的或足够接近,因为我所做的所有实验都成功了。但后来我尝试这样做,这也很有效:

查看指令的数量以及 CPU 在这两种情况下实际必须做的事情,人们会假设,如果一种更快,那将是“调用”变体。但是由于使用了“ret”变体,并且首先需要大量知识,所以第一个变体有什么优势?(或者是吗?)

0 投票
1 回答
79 浏览

c - 新 CPU 上的 Spectre v1 示例

我知道 Spectre 是如何工作的,我在 GitHub 上找到了一个程序来演示它是如何工作的。但在我的电脑上 win 10 21h2(i5-11400F、i5-9600K、R7-5800hs)它不起作用,它只会给出问题,但在 i5-7500U 上它也适用于 win 10。我知道有补丁和修复2018 年之后,但它们都防止访问其他程序,在这种情况下,幽灵收到的数据是由同一程序创建的,因此保护不应该影响结果。问题:

  1. 这个程序可以在新处理器上运行吗?
  2. 它的参数负责什么(为什么要采用这种大小的数组)?

来自GitHub的代码: