記事閲覧

− 野ざらし言 −

5847 Re^20: N88-BASICのRENUMのようなマクロ

めざら 2025/05/03(Sat) 10:18 [5846]へのコメント
http://mezala.la.coocan.jp/
> プッシュの行がコメントになっていると、異常動作の確率が圧倒的に高い。

プッシュをせずにポップだけ行っていたら,動作が異常になるのは必然です。
異常がみられなかったとしたら,運がよいだけで,たまたまですね。
特に,履歴バッファの先頭を指すアドレスなどが絡んだ場合,破滅的なことにも。

プッシュ/ポップで使うマクロスタック・ポインタ(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

返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

おなまえ :
Eメール :
タイトル :
メッセージ: 通常モード(推奨)  整形モード(非推奨)  preモード(空白再現)
※ プログラムコード等を含まない場合は,できるだけ通常モードをご利用ください。

参照先 :
暗証キー: (英数字で8文字以内) プレビューなし


- 以下のフォームから自分の投稿記事を修正・削除することができます -

処理 記事No. 暗証キー