问题标签 [program-counter]

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 投票
2 回答
594 浏览

operating-system - 程序状态字 (PSW) 和程序计数器 (PC) 有什么区别?

在操作系统课程中,讲师在谈到中断处理时介绍了 PSW 和 PC。

他的解释是 PC 持有要获取的下一条指令的地址 PSW 包含执行状态信息

但后来我在网上搜索,发现PSW = PC + 状态寄存器。这让我很困惑。

一方面,我不确定“执行状态信息”指的是什么。另一方面,如果 PSW 具有 PC 的功能,我们为什么还需要它呢?

感谢任何解释。

0 投票
1 回答
196 浏览

assembly - 如何用汇编语言/emu8086 声明计数器?

我是汇编语言的新手。我只需要一些关于如何声明减少输入数字的计数器循环的建议或提示。例如输入 = 5,打印 = 55555.5555.555.55.5

这对你们来说很基础,对我来说很难学,但我不会停止学习。我只是需要一些建议。

0 投票
1 回答
38 浏览

assembly - 比较架构 - LC-3

我想知道 PC(程序计数器)与条件代码有什么关系?我注意到,当 PC 被引入时,它紧随其后有“,条件代码”。我知道条件代码的作用,但不确定它们之间的关系。

0 投票
2 回答
59 浏览

cpu - Address in Program Counter Register

We know that the Program Counter contains the address of the next instruction to be executed. I am trying to understand which address this is - logical (CPU) or physical (RAM).

0 投票
1 回答
40 浏览

process - 进程中的程序计数器

我在理解 Tanenbaum 现代操作系统书中的这段话时遇到了一些问题:

“我们看到四个进程,每个进程都有自己的控制流(即,它自己的逻辑程序计数器),并且每个进程都独立于其他进程运行。当然,只有一个物理程序计数器,所以当每个进程运行时,它的逻辑程序计数器被加载到实际程序计数器中”。这是段落中所示的图表在此处输入图像描述

我遇到的问题是不是每个进程都有自己的程序计数器吗?并且由于每个程序已经是一个正在执行的单独进程,为什么它需要加载回“真实”程序计数器?我不明白这个真正的程序计数器是从哪里来的?

0 投票
0 回答
42 浏览

cpu-registers - 当程序计数器递增时,累加器中的任何值都存储在哪里?

当发生取指解码执行周期时,程序计数器会递增以指向内存中要取指的下一条指令。如果第一条指令是 LDA(从内存加载到累加器),第二条是 ADD(将内存中的值添加到累加器中的值)在 FDE 周期 1 期间加载到累加器中的值在 PC 递增时执行在 FDE 周期 2 开始时?据我了解,增量将发生在算术逻辑单元中并输出到累加器,从而覆盖我们从周期 1 中需要的值,因此它必须临时存储在某个地方。

0 投票
0 回答
29 浏览

java - 如何在基于操作系统的 java 中获取获取周期的结果?我是java的新手我正在寻找一些建议

如果我必须从内存中获取指令地址并将其分配给 ram 的某个区域,我如何让获取周期工作?我刚开始学习java语言有什么建议吗?我想从指令中获取地址并将所需的 ram 添加到它我想知道我是否在正确的轨道上。

如果我必须从内存中获取指令地址并将其分配给 ram 的某个区域,我如何让获取周期工作?我刚开始学习java语言有什么建议吗?我想从指令中获取地址并将所需的 ram 添加到它我想知道我是否在正确的轨道上。

0 投票
2 回答
131 浏览

assembly - ARM / Aarchh64 处理器的等效 eip/rip、ebp/rpb、UESP/rsp 寄存器

标题##什么是eip的等价物,用于 Intel CPU 但用于 ARM/Aaarch64 CPU 的rip寄存器?

我需要翻译为使用 32 位eip或 64 位rip寄存器的 Intel CPU 编写的应用程序。

这些方法使用英特尔寄存器:

函数 GetInstructionPointerRegisterValue --> 使用:regs32[eip] 或 regs64[rip]。

函数 GetStackBasePointerRegisterValue --> 使用:regs32[ebp] 或 regs64[rbp]

函数 GetStackPointerRegisterValue --> 使用:regs32[UESP] 或 regs64[rsp]。

我应该为 ARM ARM/Aaarch64 使用什么类似的寄存器?

它是否存在 x86/amd64 寄存器与 arm/aarch64 寄存器的比较和等价表?

谢谢。

0 投票
0 回答
39 浏览

assembly - 为什么 popl %eax 可以用来设置 popl 指令的地址?

代码如下

  1. 寄存器 %eax 设置为什么值?
  2. 解释为什么这个调用没有匹配的 ret 指令?
  3. 这个代码片段有什么有用的用途?

书中的答案如下。我不明白。这部分代码有更详细的解释吗?

  1. %eax 设置为 popl 指令的地址。
  2. 这不是一个真正的子程序调用,因为控制遵循与指令相同的顺序,并且返回地址从堆栈中弹出。
  3. 这是 IA32 中将程序计数器的值放入整数寄存器的唯一方法。
0 投票
2 回答
76 浏览

assembly - 程序计数器的值如何递增?

我有一个指令块,我想知道 pc 寄存器是如何工作的。它在 Wikipedia 上说,pc 寄存器保存要执行的下一条指令的值,但是,查看二进制 ninja 的反汇编图以获得相同的指令块,这似乎并不完全正确。

这是二进制 ninja 的反汇编图的一部分,其中在每个内存加载的前面都写入了加载发生的内存地址。
在此处输入图像描述

这也发生在代码的下方,PC并不总是保存下一条要执行的指令的地址。有什么我应该解释的吗?