Push local、Pop local【NandGame編】
はじめに
いつもブログをご覧いただきありがとうございます。
コーストFIRE中のIPUSIRONです😀
Push localレベル
Push localレベルのゴールは、マクロPUSH_LOCALを実装することです。
マクロPUSH_LOCALは、LOCALSと"index"(LOCALSから見た相対位置)によって指定されたメモリーアドレスの現在値を取り出して、スタックにPUSHします。
![](https://akademeia.info/wp-content/uploads/2023/12/push_local1.png)
Push localレベルを解く
Push argumentレベルのコードをベースにして、2行目「PUSH_STATIC ARGS」を「PUSH_STATIC LOCALS」に変更するだけです。
PUSH_VALUE index
PUSH_STATIC LOCALS
ADD
PUSH_MEMORY
![](https://akademeia.info/wp-content/uploads/2023/12/push_local2.png)
Pop localレベル
Pop localレベルのゴールは、マクロPOP_LOCALを実装することです。
マクロPOP_LOCALは、スタックの一番上の値を取り出して、LOCALと"index"によって指定されたメモリーアドレスに格納します。
![](https://akademeia.info/wp-content/uploads/2023/12/pop_local1.png)
Pop localレベルを解く
POP_STATIC TEMP
PUSH_VALUE index
PUSH_STATIC LOCALS
ADD
PUSH_STATIC TEMP
POP_MEMORY
![](https://akademeia.info/wp-content/uploads/2023/12/pop_local2.png)