【问题标题】:fetch and decode instruction located at X address with c使用 c 获取和解码位于 X 地址的指令
【发布时间】:2017-04-06 20:44:13
【问题描述】:

我想获取并解码地址 X 处的指令。之后,我想将地址增加 4,然后执行解码后的指令。寄存器是 32 位大端。我不是在寻求解决方案,更多的是关于如何在 C 中执行此操作的指针或提示,或者是否有人知道一些好的指南可以遵循。

【问题讨论】:

  • “地址”将使用指向char 的指针来实现。您模拟的“指令”将存在于一个字符数组中。
  • 好的,让我们说 reg 63 作为程序计数器工作,我如何调用它并将其用作其他指令的指针
  • 相信你是在找这个功能跳转到地址man7.org/linux/man-pages/man3/fseek.3.html和这个去读linux.die.net/man/3/fread(读后地址自动更新)。
  • 首先,在纸上设计这个,有图片和基本流程。然后将其翻译成您熟悉的任何语言,或伪代码,或只是您发明的某种类似计算机的语言。通过逻辑检查确保它有效;这已经足够了。只有这样你才能把它翻译成“C”。这样的事情可以用语言的一个非常小的子集来实现——也许你的问题出在最初的几个步骤中。如果您仍然无法将某些结构翻译成“C”,请返回您的伪代码,有人会帮助您。
  • 欢迎来到 Stack Overflow!请edit您的问题显示the code you have so far。您应该至少包含您遇到问题的代码的大纲(但最好是minimal reproducible example),然后我们可以尝试帮助解决具体问题。您还应该阅读How to Ask

标签: c cpu-registers instructions


【解决方案1】:

您可能需要为此进行汇编,而不是 C。您可以将汇编代码链接到 C 程序中,但不应该用 C 编写。

【讨论】:

  • 处理处理器的实际指令集?你不可能为此想要C。一路ASM
  • 您可以用“C”甚至更高级的语言(例如 Python)编写完整的处理器模拟器。用高级语言实现一个简单的处理器是 CS 课程中的常见任务。见stackoverflow.com/questions/23026095/…
猜你喜欢
  • 1970-01-01
  • 2020-04-29
  • 1970-01-01
  • 2018-03-18
  • 1970-01-01
  • 1970-01-01
  • 2021-02-07
  • 1970-01-01
  • 2015-03-03
相关资源
最近更新 更多