[過去ログ] 今夜も Wine で乾杯! - 23本目 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
678
(2): 2022/04/19(火)10:24 ID:WRR9mRIv(1/2) AAS
>>676
> ii)32bitlinux上のwineの場合、?は仮想8086モードに移行して直接動作(vm86システムコール利用)
Wine4.0でvm86システムコールを利用するコードが削除され、以降はdosboxのCPUエミュレーションで
リアルモードのコードを実行するようになっているはず

dosboxを利用するコードが入ったのはWine1.4

Wineのコードをgrep vm86して確認してみて

> ?は16ビットプロテクトモードに移行して直接動作(modify_ldtシステムコール利用)

自分もこう動いているように思っていたんだけど実際のwineでmodify_ldtを使っている箇所は
外部リンク[c]:source.winehq.org
外部リンク[c]:source.winehq.org
省6
680: 2022/04/20(水)00:54 ID:s2MtO61K(1/2) AAS
>>678
今は32bit環境がないからdosプログラムがどうなっているかはすぐには確認できないけど、Win3.x向けプログラムはWine7.6でもmodify_ldtを使っている(少なくとも俺環では)
strace -f wine <win16app.exe> |& grep modify_ldt
で一杯出る
あと、64bitのlinux環境では32bit用セグメントが常にGDTに用意されていたと思うから、32bit互換モードにはfar jmp一発で移れる(アセンブリで試しに書いたら動いた)
681
(1): 2022/04/20(水)03:25 ID:s2MtO61K(2/2) AAS
>>678
外部リンク[h]:source.winehq.org
を見る限り、MacとAndroidの場合に16bit用のLDT関連がobsoleteになるっぽい
確かにMacは今や32bit互換モードも含めてobsoleteだし、Androidはセキュリティのためseccompで多くの不要なシステムコールを禁止している

あと、外部リンク[c]:source.winehq.org
の144行とかにfar jmpがあるから、ここでモード移行かな
これはWindowsのHeaven's Gateと同じ方式
不要になるのは32bitのlinuxのライブラリ(/usr/libとか/usr/lib32にある.so)であって、Wineの32bitライブラリ(syswow64にあるやつ)は必要
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.042s