Virtual machine 如果我的malbolge程序只包含一条指令,内存应该填充什么?

Virtual machine 如果我的malbolge程序只包含一条指令,内存应该填充什么?,virtual-machine,esoteric-languages,malbolge,Virtual Machine,Esoteric Languages,Malbolge,根据原始规范,Malbolge VM使用之前两个单元上的疯狂操作填充空内存单元。“未初始化的单元格通过对前两个单元格重复执行op来设置。”即 为了理智起见,如果程序只包含一条指令,我该怎么办 或者我应该假设最后一个字符总是EOF?从实现和语言律师的角度来看,有两种选择- >P>如果我们将“前两个单元格”定义为字面上的前两个单元格,则单个的字符或空的MalbGe程序在语言中是“强>非法”,因为它不能按照规范执行。 >P>如果考虑 [M]=CRZ[M-2 ],[M-1 ] < /代码>,它会变得

根据原始规范,Malbolge VM使用之前两个单元上的疯狂操作填充空内存单元。“未初始化的单元格通过对前两个单元格重复执行op来设置。”即

为了理智起见,如果程序只包含一条指令,我该怎么办


或者我应该假设最后一个字符总是
EOF

从实现和语言律师的角度来看,有两种选择-

    >P>如果我们将“前两个单元格”定义为字面上的前两个单元格,则单个的字符或空的MalbGe程序在语言中是“强>非法”,因为它不能按照规范执行。

    >P>如果考虑<代码> [M]=CRZ[M-2 ],[M-1 ] < /代码>,它会变得有趣。主要实现(可能与其他大部分实现一起)使用
    无符号短
    (或
    int
    )作为内存指针。当您尝试从
    1
    m-2
    )中减去
    2
    )时,结果是
    0xffff
    ,十进制
    65535
    (有关详细信息,请参阅答案),这只是略高于malbolge的
    59049
    内存限制。该故障在正常机器上运行(几乎)完美,使用
    0xffff
    单元进行疯狂的运算(甚至不会损害环境内存!),但在有限内存或虚拟机上将失败

    • 根据指针的使用方式,最终可能会使用
      0xffffff
      而不是
      0xffff
简言之

  • 如果手动运行,则假定它失败
  • 如果在虚拟机上运行它,它会失败
  • 如果在模拟器上运行它,可能会正常运行,但由于
    0xffff
    是一个随机值的内存单元,导致环境内存中出现随机值,因此无法运行自身。另一方面,你能从单字节malbolge程序中得到什么
[m] = crz [m-2], [m-1]