投稿者 GH 日時 2000 年 9 月 05 日 22:54:39: [DG-001894]
回答先: 10年ぐらい前のベーマガで・・・ 投稿者 ギ・コ・キャラット 日時 2000 年 9 月 05 日 13:09:57
間接ジャンプはアセンブラだけでなく、Cでもよく使いますね。
また、ジャンプテーブルテクニックはアルゴリズム上、重要なテクニックです。
また、ROM化する場合も使います。BASIC ROMは一度ジャンプテーブルに飛ばしてから、各ルーチンに飛ぶように設計します。これによって、拡張できるようになっているわけです(ジャンプテーブルを書き換えるだけ)。
ということで、配列を使ってif文を使わない例を考えてみました。for文でループするのが最もすっきりしますが、処理速度的には遅くなりますね。
for i = 0 to 10
if x(i) = 1 then .....
next
そこで、別の例を考えてみました。
if x = 1 then mo$ = "left"
if x = 2 then mo$ = "right"
if x = 3 then mo$ = "up"
if x = 4 then mo$ = "down"
こういう処理の場合、
s$(1) = "left"
s$(2) = "right"
s$(3) = "up"
s$(4) = "down"
mo$=s$(x)
とすれば速くなりそうです。
しかし、BASIC忘れてますな。私。文法間違ってるかもしれませんが、意味は伝わるかも。等価式って=1つでいいんだっけ? ついついインデント入れたくなっちゃうよ。