程序计数器模拟器

PC 跟踪

使用 loop: 这样的标签、LOAD 或 ADD 等顺序指令、BR label 或 BR +8 等分支,以及 JMP、CALL、RET 和 HALT。

这款教学模拟器为每个非空指令行分配地址,并跟踪简化的程序计数器(PC)变化。它不是代码行数、语句或 token 计数器,也不会编译或执行任何编程语言。

如何跟踪指令清单

  1. 1

    输入简短清单

    每行使用一条定长指令,并可添加 loop: 这样的 ASCII 标签。

  2. 2

    选择地址模型

    设置起始地址、1、2、4 或 8 字节指令大小、16/24/32 位宽度与显示格式。

  3. 3

    设置跟踪方式

    统一将所有已识别分支视为跳转或不跳转,选择 1–80 步并查看每次 PC 变化。

支持的模型

清单项目 模拟行为
LOADADD 等其他 opcode 按所选定长指令大小前进
BRBRABRANCHBEQBNEBGTBGEBLTBLEBZBNZJZJNZ 使用全局“跳转/不跳转”选项
JMPJUMPGOTO 跳到标签或数字地址
CALLJSRBL / RETRETURN 压入 / 弹出模拟返回地址
HALTHLTSTOP 停在当前 PC

目标可以是 ASCII 标签、十进制地址或带 0x 的十六进制地址。+8 这类带符号目标相对于下一个顺序 PC;无符号数字则是绝对地址。地址会按所选位宽回绕。//; 开始注释。操作数只显示,不参与运算。

限制与隐私

  • 输入最多保留 1,800 个字符,解析在 200 条指令后停止。
  • 跟踪限制为 1–80 步;所有条件分支共用同一个全局选项。
  • 不模拟寄存器、内存、标志位、流水线、延迟槽、指令编码或变长指令。
  • 标准模式通过 Livewire 将清单发送到本站;分步模式还会把清单写入网址。请勿粘贴机密代码。

常见问题

不会。它为指令行分配地址并跟踪 PC,不统计源代码行、语句或 token。

不支持。它只识别一小组通用控制流 opcode。其他 opcode 只让 PC 前进,操作数不会执行。

偏移量加到下一个顺序 PC 上。当前 PC 为 0x1000、指令大小为 4 字节时,目标是 0x100C。

清单会发送到本站供 Livewire 渲染,分步模式还会将其放入网址。本站不调用外部代码分析 API,但仍请避免机密代码。

相关工具