Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly x86汇编:难以找到无限循环挑战的想法_Assembly_X86 16_Corewars - Fatal编程技术网

Assembly x86汇编:难以找到无限循环挑战的想法

Assembly x86汇编:难以找到无限循环挑战的想法,assembly,x86-16,corewars,Assembly,X86 16,Corewars,我打算和我的朋友们举办一场类似“corewars”的比赛(我们使用的是与原游戏相同的内存网格) 在游戏中,我们每个人都假设写一个“保险箱”,它是一个不超过25行的无限循环。每个“安全”都有一个可以停止循环的技巧或代码,从而破坏“安全”。例如: ;Safe safe: mov ax, [1000] cmp ax, 9999 jne safe 如果我们将正确的代码(9999)传递给[1000],则此保险箱可能会被破坏,这将破坏保险箱: ;Breaker mov ax, 99

我打算和我的朋友们举办一场类似“corewars”的比赛(我们使用的是与原游戏相同的内存网格)

在游戏中,我们每个人都假设写一个“保险箱”,它是一个不超过25行的无限循环。每个“安全”都有一个可以停止循环的技巧或代码,从而破坏“安全”。例如:

;Safe
safe:
    mov ax, [1000]
    cmp ax, 9999
    jne safe
如果我们将正确的代码(9999)传递给[1000],则此保险箱可能会被破坏,这将破坏保险箱:

;Breaker
mov ax, 9999
mov [1000], ax
breaker: jmp breaker
我在考虑做一个数学方程,然后用它的结果作为保险柜的代码,但是我没有什么好主意,既简短又有趣


我不确定这个问题是否与这个堆栈站点相关,所以如果不是,我想知道解决此类问题的更好的堆栈站点。

有趣的想法,但请提供更多的上下文。您标记了[emu8086],这是否意味着您被限制在该模拟器中运行代码?例如:
safe:rdrand/jc-safe
很短,可以在非常特定的技术条件下断开,但不能在emu8086上运行。其他想法:在输入端计算一个加密函数(例如:散列,解密),并根据一个常量检查它。计算输入和输出iif上的Rienman Zeta,如果结果为零(而不是沿着平凡的线)。通常情况下,如果挑战的是RE而不是数学技能,那么一个简单的变形算法就很有效。我们仅限于模拟器8086。我还想做一个rol加密。但我仍然不明白如何为它制作钥匙(检查我的保险箱是否工作)。我从来没有听说过瑞曼·泽塔,所以我现在就去查一下。非常感谢。我还真的很喜欢你在开始时展示的那个简短的东西。你可能知道与emu8086类似的东西吗?我从来没有真正使用过emu8086,但为什么不从现在开始呢?复制C实现,将种子设置为已知值,然后运行它。复制输出。然后在您的保险柜中的汇编中实现它,并添加一个测试来检查它的输出是否等于之前的输出。如果没有,跳回到xorshift。这样一来,玩家必须1)找出xorshift的算法(非常简单)2)编写一个程序来强制执行种子。@MargaretBloom,谢谢你的建议!我现在就试试。@MargaretBloom ehmm你有这样的xorshift的实现吗?我还没有找到这方面的好例子(