トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

Forthを作ってみる / 「値をスタックに積む」を実行する

「値をスタックに積む」を実行する

プログラム配列prog[prog_cnt]の内容がCODE_PUSHであった場合は、

  • コードの次の値prog[prog_cnt + 1]をスタックに積む内容とする
  • push()を呼び出す
  • prog_cntを2増やす

プログラムカウンタprog_cntは、コード自身とプッシュする値とで、全部で2進めないといけない。

void proc_prog(void)
{
    while (prog[prog_cnt] != CODE_END) {
        switch (prog[prog_cnt]) {
        case CODE_PUSH:
            push(prog[prog_cnt + 1]);
            prog_cnt += 2;
            break;
        }
    }
}

同じようにCODE_PLUSとCODE_PRINTの時も処理する。

void proc_prog(void)
{
    while (prog[prog_cnt] != CODE_END) {
        switch (prog[prog_cnt]) {
        case CODE_PUSH:
            push(prog[prog_cnt + 1]);
            prog_cnt += 2;
            break;
        case CODE_PLUS:
            plus();
            prog_cnt++;
            break;
        case CODE_PRINT:
            print();
            prog_cnt++;
            break;
        }
    }
}

戻る 前へ 次へ