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

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

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

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

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

Not、Goto、If-goto【NandGame編】

はじめに

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

FIRE生活中のIPUSIRONです😀

IPUSIRONのプロフィールを見る

Notレベル

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

マクロNOTは、スタックの一番上のデータをビット反転(2進数の各桁でビット反転)します。

Notレベルを解く

POPしてからビット反転のビット演算子を使って、その結果をPUSHすればよいだけです。

POP_D
D = ~D
PUSH_D

Gotoレベル

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

マクロGOTOは、"label"というラベルのある行番号にジャンプします。

※[Show Assembler Help]ボタンの上に"Placeholders: label"と表示されています。

Gotoレベルを解く

これまでのレベルですでにJMP命令を活用しているので、本レベルは簡単なはずです。

A = label
JMP

If-gotoレベル

If-gotoレベルのゴールは、マクロIF_GOTOを実装することです。

マクロIF_GOTOは、スタックの一番上の値をPOPし、その値が0でなければ"label"というラベルにジャンプします。

※[Show Assembler Help]ボタンの上に"Placeholders: label"と表示されています。

If-gotoレベルを解く

POP_D
A = label
D; JNE