17/07/10 07:50:01.44 XRoJrlAOa.net
そもそもこのgccと全く関係ないプログラムが正常に動く環境どんだけあんの?
自己書き換えの決まりごとのうち、もとの命令列を書き換える場合、すなわちオプション2の場合はCPUIDなどのシリアライズ命令を発行しろとある
Java HotSpotやXbyakはオプション1の方法を使っててカーネルコールで実行属性書き換えるだけでいい
URLリンク(www.dotup.org)
URLリンク(www.intel.com)
ただこれだけだと不十分で、メモリシリアライズより前のタイミングでスレッドが切り替わった場合の動作保証ないからユーザーモードで確実にやるには割り込み禁止かけるなどちゃんと手順踏む必要あったはずなんだけどどうですかね?
HotSpotとかXbyakはユーザーモードで保証するのが結局めんどくさいからオプション1の方法を使ってたはず