Viewed: 14:53:21 in July 3, 2025
これも忘れないうちに。
BASICはPerlと似た分岐処理をしますが、機械語の場合は分岐(Perlで言えばifとかwhileみたいなやつ)処理を行うには、フラグを取り扱う必要があります。
フラグ処理を前提とした機械語プログラミングをやってたので、ついついPerlでもフラグを使った分岐処理をやりがちなのですが、これが案外便利なんです。
例えば通常
my ($a, $b);
my $c;
if (($a eq “”) and ($b eq “”)) {
$c = “1”;
}
と書くところを、
my ($a, $b);
my $c;
my $flag = “false”;
if (($a eq “”) and ($b eq “”)) {
$flag = “true”;
}
if ($flag eq “true”) {
$c = “1”;
}
こんなふうにですね。
後者の方が複雑ではないか、とツッコミを受けそうですが、はい、仰る通りです。分岐条件が単純ですからね。実際、これくらいの分岐条件で固定するのでしたら、私も前者を使いますし、そもそも”if () { 〜 }” を使いません。
使うなら、”〜 if ();”ですね 。
でもですね、最初は単純な分岐条件であっても、スクリプトの機能がどんどん高まり、当該の分岐条件が複雑になることが想定されるならば、迷わず後者ですね。
あるいは、早い段階で前者から後者に切り替えてます。
最大のメリットは、デバッグのしやすさ。他、前者では煩雑になりがちな条件設定が後者ではより単純にできる等ありますね。
Z80A機械語をマスターしててよかった。ビット単位で扱ってましたよ、フラグ。1バイトで8つのフラグを扱わなければならないほどに、メモリの制約がシビアだった。