【问题标题】:Turing Complete Alphanumeric x86 Instruction Set (Subset)图灵完备的字母数字 x86 指令集(子集)
【发布时间】:2012-05-27 16:48:24
【问题描述】:

我希望创建一个最小的、计算通用的字母数字 x86 操作码子集。最终,我希望子集包含尽可能少的指令,如果有多个最小子集,我也想知道这一点。该子集应该能够模拟可以使用整套字母数字指令编写的任何程序。说明应仅涵盖与字符“A-Z”、“a-z”和“0-9”相对应的说明。

到目前为止,我认为 pushpopincdeccmpje 就足够了,但我确信还有一个更小的集合。我如何证明我生成的集合能够使用所有字母数字指令模拟任何程序?我怎么能证明这样的集合是最小的?有谁知道这样的指令子集是否存在?

【问题讨论】:

  • 您当然可以从列表中删除incdec,您不必同时拥有两者。 :)
  • 不能将incdec 替换为一个接受负数的add
  • 就像 Alexey 所说,incdec 中只有一个是必要的,因为最终会发生溢出。
  • 这取决于您希望允许的低效程度;例如Why is mov turing complete?。如果您想实际模拟其他 x86 指令,以便可以在寄存器中使用类似的值(而不必将事情分解为单个位),那么您需要的不仅仅是 mov。至少一个布尔值(可能是 BMI1 andn)。您可以使用生成和传播进位的循环来模拟 add,直到您处理完所有进位。
  • IDK 你对 A-Za-z0-9 的意思是什么。该字符集涵盖了每条 x86 指令,包括像 AVX vextractf128xchg 这样的东西,它有一个隐含的 lock 前缀,使其成为原子 RMW。 (与cmpxchg8b 和其他接受lock 的指令不同。)和vfmadd132ps FP FMA。你的意思是你不允许助记符中的空格,即没有前缀?

标签: x86 alphanumeric opcode turing-complete


【解决方案1】:

我不确定我是否明白你的问题,尤其是关于“字母数字”的部分,但我想指出众所周知,movxor 都是图灵完备的。

【讨论】:

    【解决方案2】:

    这只是一个指令!这里是证据

    http://en.wikipedia.org/wiki/One_instruction_set_computer

    为什么?只是因为“指令”是一个依赖于机器的概念。您不能仅仅因为没有这样的通用/绝对/原子指令而定义一小组指令:这完全取决于底层硬件:事实上,“真正的”图灵机是一个数学概念(一组规则)而不是物理机器

    【讨论】:

    • 这与我的问题无关,很具体。
    • 但您可以在那里获取指令并拆分为 x86 指令。例如SBNZ可以用subjne实现,SUBNEG可以用subjs模拟...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    • 2015-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    相关资源
    最近更新 更多