簡體   English   中英

保存數據以供以后使用mips程序集的方法

[英]Ways to save data for later use mips assembly

我對如何處理一些問題有一些疑問。 我正在嘗試用匯編設置一個tic tac toe游戲,我正在嘗試實現作為播放器的計算機。 我正在尋找方法將數據主要保存到我可以附加的變量,例如變量字符串,我將添加每個玩家所扮演的單元格的所有變量。

我怎么能這樣做,有沒有辦法我可以說創建一個數組來保存我可以動態更改和分配的信息?

我建議使用調用堆棧作為堆棧數據結構,或者更簡單地創建遞歸函數。

遞歸自然有助於對可能的動作進行詳盡的搜索,修剪任何導致強迫失敗的分支。 在形式上,這被稱為Minimax搜索(以尋找下一步)。 https://www.cs.cornell.edu/courses/cs312/2002sp/lectures/rec21.htm

如果你找到一個勝利的舉動,你就會回到那個事實,並且來電者知道它正在考慮的董事會位置讓對手強行取勝。 你希望你的功能避免讓對手強制獲勝,並且發揮可能導致自己被迫獲勝的動作(如果有的話)。 例如Tic Tac Toe遞歸算法


我建議使用固定大小的數據結構來表示電路板狀態 你的好選擇是

  • 一個9字節的字符數組,如空格,'X'和'O'(填充到12,所以你可以用3x lw復制它)。 即在C中, struct board { alignas(4) char b[9]; }; 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可能更容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM