ポスト

最近のプログラマさんには、きっと意味が分からないと思う昔の話。 アセンブラで書いたコードの自己書き換えという省メモリ高速化手法があったんじゃよ。 ただ、バグった時、どこが原因か分かりにくい。 そんな理由でアセンブラから高級言語に移行して行く際に禁じ手として封印されたのじゃ。

メニューを開く

鶴田道孝 https://ja.plants5elm.com/@mTsuruta

みんなのコメント

メニューを開く

自己書き換えは80486と68030あたりで動作不可になりましたね。理由はキャッシュが実装されたためです。 この頃のCPUになるとRAMからキャッシュにフェッチ済みの命令を自己書き換えしてもCPUの動作に反映されないので意味がなくなりました。 486動作不可みたいなゲームたくさん出ましたね。

まっきー@makin55

メニューを開く

昔のCOBOLコードでASIGN(?)って命令で、リラン(ABENDしたら自動的に再起動)した時に自己コードを書き換えるようなことを当たり前にやってたと思うんだけど… ググってもそんな命令見つからないねぇ。 H社のメインフレームの方言だったのかしらね。 そもそもリランって概念が一般的なのかも疑問だけど。

アルベルト•ビスト@Alvert_Vist

メニューを開く

昔はレジスタを直に書き換えられましたからね…。 BASICとかでもPOKEとPEEKとCALLまであれば最高のおもちゃw

yukinoda_jp@yukinoda_jp

メニューを開く

自己書き換えプロテクト、とかいうのを思い出しました。 ROMカセットだと書き換わらないので大丈夫だけど、 ディスクやメモリ上に置いとくと書き換わってゲームができなくなる、とかなんとか。 実例があるのかどうかはわかりませんが。

tortakasaki@tortakasakiver2

メニューを開く

自己書き換えどころか他者書き換えなんてのもメンテしたことある。あれはたまげた。

森田広記@morita0

メニューを開く

コンピュータウイルスネイティブ世代(Win95ぐらいか?)だとそんなの危険すぎて無理という認識

tibigame@tibigame

メニューを開く

CPUの読み込みバッファ長の違いでいままで動いていたプログラムが新しいCPU で動かなくなったりしたことがあったな。

NaruTo@うなぎ食べない教@KAZAMAI_NaruTo

メニューを開く

通りすがり失礼 聞いたことはあるけどその作業に関わったことはなかったなぁ… 寧ろコンパイラのバグで逆アセンブルしたコードにパッチ当てなら駆け出しの頃良くやってましたか…

megane1964@今年還暦@megane_1964_ab

メニューを開く

自己書き換えとは違うけど、textセクションの書き換えとかはデバッグレジスタの個数超えたブレークポイントとかでint3に置き換えたりやるんじゃないのかな?だからリードオンリーなページとかには設定されてなさそうな気がする。

メニューを開く

CPUエミュレーターで動かせなかったやつ(後に動くようになる)

人気ポスト

もっと見る
Yahoo!リアルタイム検索アプリ