问题标签 [machine-instruction]
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.
operating-system - 谁来决定哪些指令是保密的?是硬件制造商还是操作系统开发商
我读到我们的系统中有一些特权指令可以在内核模式下执行。但我无法理解是谁让这些指令享有特权。是硬件制造商在模式位的帮助下将一些有害指令硬连接为特权,还是操作系统设计者使指令特权使它们仅在特权模式下工作。
operating-system - 计算机 CPU 如何执行软件应用程序
我正在扩展关于计算机程序运行时会发生什么的问题?并来自斯坦福 CS101 站点Software: Running Programs的讨论。CS101现场报价
机器代码定义了一组单独的指令。每个机器代码指令都非常原始,例如添加两个数字或测试一个数字是否等于 0。存储时,每条指令只占用几个字节。当我们前面说 CPU 每秒可以执行 20 亿次操作时,我们的意思是 CPU 每秒可以执行 20 亿行机器代码。
一个程序,比如 Firefox,是由数百万条这些非常简单的机器代码指令组成的。有点难以相信像 Firefox 这样丰富而复杂的东西可以通过添加或比较两个数字的指令来构建,但这就是它的工作原理。一个沙雕从远处看可以是丰富而复杂的,即使单个的沙粒非常简单。
我不明白的是如何将 Firefox 窗口或 GUI 转换为简单的 CPU 指令,只需添加或比较两个数字?怎么知道 CPU 执行了哪些指令来启动 Firefox 窗口呢?在搜索栏中输入的用户搜索怎么样?这将什么转化为 CPU 指令?
如果 Firefox 是一个复杂的例子,那么像记事本这样的简单应用程序呢?实际上是否可以看到从运行记事本到键入ABCDEFGHIJ
并将其保存为的所有指令test.txt
?
exception - 如何在流水线系统中检查中断
问题:我想知道是否所有指令都有一个执行周期( fetch-decode-execute,基本上不完全是),如果它是一个流水线处理器,那么处理器的控制单元如何检查是否有任何中断或异常发生在执行下一条指令之前,因为下一条指令已经在流水线中(例如,在解码阶段)。
解释:也许举一个特定的例子来使我的问题更清楚会有所帮助。假设我们依次有两条机器指令X1和X2。当X1处于获取阶段(假设是第一阶段)时,流水线中没有其他指令。在X1传递到第二级后(因此X2处于流水线的第一级),发生中断。在执行下一条指令( X2 )之前,处理器将在完成当前指令( X1 )后检查是否有任何中断发生。但是当X1时X2已经处于第二阶段已完成。那么,如何或何时检查中断(异步中断)或异常(同步中断)?
如果你们中的任何人能给我一个解释性的答案,我将非常高兴。此外,如果您想了解处理器的架构,您可以使用 x86-64(AMD64)。非常感谢你,提前。
compiler-construction - 指令选择的主要算法是什么,它们的优缺点是什么?
嗨,我正在关注关于编写编译器的老虎书,目前正在编写第 9 章。
本章是关于指令选择的,其目标是生成成本最低的机器指令。
这本书介绍了两种算法,其中一种生成最佳平铺(MAXIMAL MUNCH),另一种生成最佳平铺(动态规划)。
但是,我想对此多了解一点,大多数编译器使用的主要方法是什么,它们是如何工作的,它们的好处和成本是什么。或者它可能不是最广泛使用的编译器的一部分?
非常感谢!!!