トップ 一覧 Farm 検索 ヘルプ RSS ログイン

RunningPushStackの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!「値をスタックに積む」を実行する

プログラム配列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;
         }
     }
 }

[[戻る|ForthImplementation]] [[前へ|ScanningProgramCode]] [[次へ|PreparingProgram]]

{{adsence}}
[[Forthを作ってみる / 「値をスタックに積む」を実行する]]に移動しました。