> プッシュの行がコメントになっていると、異常動作の確率が圧倒的に高い。
プッシュをせずにポップだけ行っていたら,動作が異常になるのは必然です。
異常がみられなかったとしたら,運がよいだけで,たまたまですね。
特に,履歴バッファの先頭を指すアドレスなどが絡んだ場合,破滅的なことにも。
プッシュ/ポップで使うマクロスタック・ポインタ(sp)は使うたびにずれていきます。便宜的に起動時の sp が指すアドレスを p とすると,1回目のプッシュで p-2 に移動し,2回目のプッシュで p-4 に移動します。
1回目のポップで p-2 に戻り,2回目のポップで p に戻ります。
さて,プッシュせずにポップだけ行ったとすると,1回目のポップで変数に戻ってくる値は p にある値で,sp の指すアドレスは p+2 になります。2回目のポップで p+2 にある値が参照され sp は p+4 になります。そこはまったく別の用途のバッファですから,どんな値が潜んでいるのかわかりません。でも VZ はユーザーが指示するとおり,中身を確認することなく愚直に指示されたアドレスの値を棚から運んできて,元の引出しに戻します。
たとえは悪いですが,薬剤師がヤブ医師の処方箋どおりに薬を渡すだけの存在だったらどうなるのか……みたいなことになると思います。
関連記事一覧ツリー
(▼ を押すとツリー全体を一括表示します)
-
▼ - 5731.N88-BASICのRENUMのようなマクロ - としき 25/03/29-14:22
返信フォーム
(この記事に返信する場合は下記フォームから投稿して下さい)