当サイトの一部ページには、アフィリエイト・アドセンス・アソシエイト・プロモーション広告を掲載しています。

Amazonのアソシエイトとして、Security Akademeiaは適格販売により収入を得ています。

広告配信等の詳細については、プライバシーポリシーページに掲載しています。

消費者庁が、2023年10月1日から施行する景品表示法の規制対象(通称:ステマ規制)にならないよう、配慮して記事を作成しています。もし問題のある表現がありましたら、問い合わせページよりご連絡ください。

参考:令和5年10月1日からステルスマーケティングは景品表示法違反となります。 | 消費者庁

Eq【NandGame編】

はじめに

いつもブログをご覧いただきありがとうございます。

FIRE生活中のIPUSIRONです😀

IPUSIRONのプロフィールを見る

Eqレベル

Eqレベルのゴールは、マクロEQを実装することです。

マクロEQは、スタックから上から2つの値をPOPして(取り出して)比較します。等しい場合は-1(=0xFFFF)をPUSHし、そうでなければ0(=0x0000)をPUSHします。

つまり、条件式(conditionals)では、0xFFFFを真、0を偽と扱っているわけです。

Eqレベルを解く

2つの値が等しいかどうかは、差を取り、その結果が0かどうかで判断できます。

今回はスタック上の連続する2つの値を比較したいので、SUBを呼び出します。その結果、減算結果はスタックに格納されます。

マクロを駆使しつつ、条件分岐の命令を追加で利用すれば、次のコードになります。

※別のコードでも動きます。ここではわかりやすいコードを心がけましたが、高速性を重視しても構いません。

SUB
POP_D
A = not_equal
D ; JNE
D = -1
PUSH_D
A = skip
JMP
not_equal:
D = 0
PUSH_D
skip: