保存数据以供以后使用mips程序集的方法

问题描述 投票:0回答:1

我对如何处理一些问题有一些疑问。我正在尝试用汇编设置一个tic tac toe游戏,我正在尝试实现作为播放器的计算机。我正在寻找方法将数据主要保存到我可以附加的变量,例如变量字符串,我将添加每个玩家所扮演的单元格的所有变量。

我怎么能这样做,有没有办法我可以说创建一个数组来保存我可以动态更改和分配的信息?

algorithm assembly data-structures mips
1个回答
0
投票

我建议使用调用堆栈作为堆栈数据结构,或者更简单地创建递归函数。

递归自然有助于对可能的动作进行详尽的搜索,修剪任何导致强迫失败的分支。在形式上,这被称为Minimax搜索(以寻找下一步)。 https://www.cs.cornell.edu/courses/cs312/2002sp/lectures/rec21.htm

如果你找到一个胜利的举动,你就会回到那个事实,并且来电者知道它正在考虑的董事会位置让对手强行取胜。你希望你的功能避免让对手强制获胜,并且发挥可能导致自己被迫获胜的动作(如果有的话)。例如Tic Tac Toe recursive algorithm


我建议使用固定大小的数据结构来表示电路板状态。你的好选择是

  • 一个9字节的字符数组,如空格,'X'和'O'(填充到12,所以你可以用3x lw复制它)。即在C,struct board { alignas(4) char b[9]; };。你制作整个结构的副本。
  • 2x位图(一个用于X,一个用于O),用于所谓的“位板”。 (在国际象棋引擎中,64位位图对于电路板上的每个方块都有一位。在3x3 tic-tac-toe中,只需要9位寄存器用于整个电路板)。然后你可以拿出一些黑客来测试3-in-a-row,比如b & 0b111 == 0b111(用andibeq)来检查顶行是否都是一个标记。 您可以通过执行X|O并查找仍为零的位来在板上找到开放空间。
  • 单个位板,每个位置2位(总共18位,大于MIPS立即数)。以这种方式查找具有空第3位的连续2可能更容易。
© www.soinside.com 2019 - 2024. All rights reserved.