- アセンブラ初心者スレッド
812 :デフォルトの名無しさん[sage]:2015/07/22(水) 07:01:44.05 ID:ALVAbODL - CRISCに関する質問だったんだから、上級者なら、内部命令のすべてが
外部からは見えないことを指摘すればすむ話だった JITのような話が飛び出してくるのは自分中心でしか考えていないからだよ だから雑談なら雑談として適当なところで切り上げることもできない
|
- アセンブラ初心者スレッド
832 :デフォルトの名無しさん[sage]:2015/07/22(水) 18:34:32.58 ID:ALVAbODL - >>827
スタックはアドレスを取れるんだから、スタックに領域を確保して >>725みたいにしてモジュールのアドレスを問い合わせて、その後ろに 処理継続先のオフセットとモジュールのアドレスを足してjmpするコードを生成する ジャンプ先でスタックを戻す モジュール名のリテラルはmovの連続で構成する DEPは後から搭載された機能だからDEPが使えるというのは環境依存だよな PICという制約を加えてもよければ、ローダによる再配置を禁止しても構わなくなるぞ 先に環境を指定して議論しなければだめだろ
|
- アセンブラ初心者スレッド
835 :デフォルトの名無しさん[sage]:2015/07/22(水) 19:18:08.19 ID:ALVAbODL - >>832はJITとやり方がそっくりだろ
JITはアプリ側でゴリゴリやる方式だし
|
- アセンブラ初心者スレッド
841 :デフォルトの名無しさん[sage]:2015/07/22(水) 22:22:05.85 ID:ALVAbODL - >>833
>>832のモジュールアドレスを register void *dop=dlopen; register void *dsym=dlsym h=(*dop)(NULL); cont=(*dsym)(h,"label_cont"); jmp(cont); こんな感じに変更すればいいんじゃないのか スタートアップルーチンでサンクを呼び出す部分までをこのやり方で置き換えるんだよ >>834 後から勝手に制約を追加できるんなら、自分だったら動的再配置を禁止するぞ そんなこと許したらcomファイル大勝利になるだろ だから先に環境を示さないとダメなんだよ 本末転倒なんていったらCRISCの話でこんなことやってる方がどうかしてるだろ 団子がどうしてもcall使ってEIP取らないとできないことがあるって言うから あえてcall封印してたんじゃなかったのかよ
|