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

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

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

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

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

NandGame

Thumbnail of post image 023
Notレベル

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

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

Notレベルを解く

POPしてからビッ

NandGame

Thumbnail of post image 180
Gtレベル

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

マクロGTは、スタックから上から2つの値をPOPして(取り出して)比較します。最初の値が2番目の値より大きければ値-1(=0xFFFF)をPUSHし、そうでな ...

NandGame

Thumbnail of post image 021
Eqレベル

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

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

NandGame

Thumbnail of post image 076
コード生成(Code generation)

コード生成は次の流れの最終処理に該当します。

トークン化⇒構文ツリー化⇒コード生成

コード生成をアルゴリズム(入出力を持つ処理)として見れば、式の構文ツリーをインプッ ...

NandGame

Thumbnail of post image 030
構文ツリー化

トークン化の処理後、トークンを構文ツリー化します。

トークンとしては数値、括弧、演算子があります((NandGameではTokenizeレベルで数値、2つの演算子「+」と「-」、普通の括弧「(」「)」だけを処理 ...

NandGame

Thumbnail of post image 003

コンパイルするということ

高級言語はアセンブリー言語より人間にやさしく柔軟な構文を持ちます。コンピューターは高級言語のコードを貴秋後コード命令にコンパイルすることで、最終的にCPUが解釈できるようになります。

例えば、2+2 ...

NandGame

Thumbnail of post image 041

スタックを演算に利用する

スタックを使えば、特定のレジスターに依存しないマクロ演算(加算や減算など)を実現できます。

代わりに、演算はオペランドをスタックからPOPし、演算結果をスタックにPUSHし直します。

こ ...

NandGame

Thumbnail of post image 078
はじめに

本記事は、Stack machineグループの前半のレベルについて焦点を当てます。

スタックの必要性

2個のレジスターだけでプログラムするのは難しく、いずれ限界がきます。例えば、2つのレジスターで2+2

NandGame

Thumbnail of post image 180
Networkレベル

Networkレベルのゴールは、ネットワーク経由で他のコンピューターからデータを受信して、モニターに表示することです。

ネットワークのワイヤーはアドレス0x6001にメモリーマップされてい

NandGame

Thumbnail of post image 130
Displayレベル

Displayレベルのゴールは、ディスプレイに好きなロゴを表示することです。

ロゴは何でもよいですが、幅・高さともに16ピクセル以上でなければなりません。

ディスプレイの仕様は