问题标签 [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.
android - 如何查找程序的指令总数?
我想查找 Android 应用程序的机器指令总数。我已经探索了 Android SDK 的 Debug.InstructionCount 类,但我相信它提供了 Dalvik VM 指令的信息(不是实际在处理器上执行的机器级指令)。我需要此信息来估计在特定处理器(使用固定频率)上执行 Android 应用程序所需的时间。我知道不同类型的指令需要可变周期,因此无法准确估计计算时间,但我仍然想做一些实验。谢谢
llvm - llvm SDnodes中的机器值类型“其他”是什么意思
我试图更深入地了解 llvm 中的指令选择过程,为此我正在逐步调试 CodeGenAndEmitDAG 函数。我在合并步骤之前打印了一个小函数(见下文) - 上述函数的第一步。在图中,我看到蓝线,它们似乎总是指向 "ch" ,我认为这意味着“其他”机器值类型。我不明白的是蓝线的含义......这是什么依赖?而且,我对“ch”的含义是否正确?是“其他”吗?
pipeline - 流水线门 2015
考虑下面给出的机器指令序列:
在上述序列中,R0
toR8
是通用寄存器。在所示指令中,第一个寄存器存储对第二个和第三个寄存器执行的操作的结果。该指令序列将在具有以下 4 个阶段的流水线指令处理器中执行:
- 指令获取和解码(IF),
- 操作数获取 (OF),
- 执行操作 (PO) 和
- 写回结果 (WB)。
对于任何指令IF
,OF
和WB
阶段每个都需要 1 个时钟周期。该PO
阶段需要 1 个时钟周期用于ADD
或SUB
指令,3 个时钟周期用于MUL
指令,5 个时钟周期用于DIV
指令。流水线处理器使用从 PO 阶段到 OF 阶段的操作数转发。执行上述指令序列所用的时钟周期数为
由于它明确给出了从 PO 到 OF 阶段应该使用操作数转发,所以上面的答案应该是 15 个时钟周期。
但在许多地方,答案是 13 个时钟周期。当我们使用从 PO 到 PO 的操作数转发时,将会有 13 个答案。
我的答案:
很多地方给出的答案:
谁能告诉哪个答案是正确的?
assembly - 长跳和短跳的区别(x86)
我读过当地址中的相对跳转小于 124时,将使用短跳转,否则应使用长跳转。
x86 上两种类型的跳转在CPU 中执行的操作/性能方面有什么区别?
assembly - “调用”指令位置的地址
我认为“呼叫”指令是一种“跳转”指令。“跳转”指令有去哪里的地址。“调用”指令要么应该有一个目标地址。但是当我反汇编二进制文件时,“调用”指令只有一个目标函数标签。那么,他们怎么知道去哪里呢?换句话说,我在哪里可以找到每个函数的目标地址?x86、ARM 什么的。
increment - CPUsim wombat1 Inc2-pc微指令
在 CPUsim wombat1 机器中,我注意到增量选项下的微指令 Inc2-pc。然而,在 12 条基本(存储、加载、添加、减去、跳转等)机器指令中,我似乎找不到它正在使用。它的目的是什么,为什么它的 Delta 设置为 2 而不仅仅是 1?
c - 如何执行放置在堆栈上的机器指令
我之前的堆栈帧中有一个返回值,它指向我后续堆栈帧中的缓冲区。如何获取放置在缓冲区中的机器指令来执行?
这甚至可能吗?根据我对堆栈的了解,这是荒谬的。因为,当然,堆栈是后进先出结构。换句话说,一旦 PC 到达返回地址,缓冲区就已经被弹出。
有任何想法吗?
函数(下<test>
)调用<getbuf>
函数(也在下):
arm - ARM7 IT (if then) 指令的真正作用是什么?
我无法理解IT
指令的功能(如果有的话)。快速参考卡有这个:
操作:If-Then
汇编器:IT{pattern} {cond}
操作:根据模式,最多生成四个有条件的以下指令。模式是最多三个字母的字符串。每个字母可以是 T(Then)或 E(Else)。IT 之后的第一条指令有条件 cond。如果对应的字母是 T,下面的指令有条件 cond,或者如果对应的字母是 E,则条件是 cond 的倒数。
其实这个梗概有点意思。架构手册条目并没有让我在理解之旅中取得任何进展:
If-Then 条件指令。
句法IT{x{y{z}}} 条件
其中:
x
指定 IT 块中第二条指令的条件切换。
y
指定 IT 块中第三条指令的条件开关。
z
指定 IT 块中第四条指令的条件开关。
cond
指定 IT 块中第一条指令的条件。IT 块中第二条、第三条和第四条指令的条件开关可以是:
T
那么。将条件 cond 应用于指令。
E
别的。将 cond 的逆条件应用于指令。笔记
可以在 IT 指令中使用 AL(始终条件)作为 cond。如果这样做,IT 块中的所有指令都必须是无条件的,并且 x、y 和 z 中的每一个都必须是 T 或省略,但不能是 E。 操作
IT 指令最多包含四个有条件的以下指令。条件可以完全相同,或者其中一些条件可以是其他条件的逻辑逆。IT 指令之后的条件指令构成 IT 块。
IT 块中的指令,包括任何分支,必须在其语法的 {cond} 部分中指定条件。
由于(大多数)每条指令都可以轻松指定条件,那么该IT
指令有什么用?
assembly - x86 - 寄存器数量与保留位数
我是组装新手,我的问题是:
例如,如果一台机器有 n 个寄存器。在汇编指令中需要保留多少位来寻址 n 个寄存器中的每一个?
功能拆分可以减少多少所需的位数?