Alex Churchill. “A Programming Language Embedded in Magic: The Gathering”. FUN 2024. • 以前にもMtGを用いて チューリングマシンを構築できる ことは示されていたが、 本研究では独自のアセンブリ言語 を処理する計算機をMtGで実装 6 https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.FUN.2024.31 より
← Ra + Rb Add1 Ra Ra ← Ra + 1 SubCond Ra, Rb Flag ← (Ra - Rb < 0) Ra - Rb ≧ 0 なら Ra ← Ra - Rb 演算結果が負になる場合、 演算が行われない Sub1Cond Ra Flag ← (Ra - 1 < 0) Ra - 1 ≧ 0 なら Ra ← Ra - 1 Mult Ra, Rb Ra ← Ra * Rb Divide Ra R6 ← Ra // R0 Ra ← Ra % R0 RaとしてR0, R6を用いる or R0=0の場合は未定義動作 Halve Ra Flag ← (Ra % 2 == 1) Ra ← Ra // 2
← Ra + Rb Add1 Ra Ra ← Ra + 1 SubCond Ra, Rb Flag ← (Ra - Rb < 0) Ra - Rb ≧ 0 なら Ra ← Ra - Rb 演算結果が負になる場合、 演算が行われない Sub1Cond Ra Flag ← (Ra - 1 < 0) Ra - 1 ≧ 0 なら Ra ← Ra - 1 Mult Ra, Rb Ra ← Ra * Rb Divide Ra R6 ← Ra // R0 Ra ← Ra % R0 RaとしてR0, R6を用いる or R0=0の場合は未定義動作 Halve Ra Flag ← (Ra % 2 == 1) Ra ← Ra // 2
+ R0 JumpBwd PC ← PC - R0 JumpFwdNF Flag == False なら PC ← PC + R0 JumpBwdNF Flag == False なら PC ← PC - R0 Return Ra プログラムを終了する ISAとしてはCall命令からの復 帰も可能だが、今回は省略