今夜も Wine で乾杯! - 24本目 (499レス)
上下前次1-新
抽出解除 レス栞
398(1): 06/14(土)12:53 ID:OiYZOC52(1) AAS
>>397
Linuxはどうなってるのか知らないけど、それってMacのCocoaとかフレームワークのコードも変換できるの?
32ビット廃止なった時みたいにCodeWeaverの人たちがなんとかしてくれるのかな
399: 06/14(土)14:37 ID:2Qahm2TX(1/4) AAS
>>398
レイヤーが違うからCocoaが64bitでしか動かなくても問題ない
ややこしいんだけど、32bit アプリを64bit OSで動かす仕組みと、64bit x86_64バイナリを64bit ARM CPUで
動かす仕組みは別なので、分けて考えないとダメ
超長文になるんだけど、32bit アプリを64bit OSで動かす仕組みを説明するね
LinuxもmacOSも32bit互換機能はカーネルレベル(システムコールレベル)で対応しており、LinuxでもmacOSでも
既存の32bitバイナリがそのまま動作するようになっている(いた)
一方、Windowsは64bit Itaniumで32bit x86を動かす仕組みとしてWOW64を導入した
Itaniumはx86との互換性が元々低いうえに途中から互換機能が削除されたので、x86バイナリを動かすのには
x86エミュレータが必要な上、システムコールレベルで互換性を保つようカーネルレベルで対応するのは
難しいので、上位のWin32 APIレベルでの互換性を保つようにした
WOW64では32bit アプリからのWin32 API呼び出しに対応する32bit版 kernel32.dll、gdi32.dll、user32.dllを
書き換えて、wow64.dllとwow64win.dll経由で64bit版 kernel32.dll、gdi32.dll、user32.dllを呼び出すようにした
さらにx86エミュレータのIA32Exec.binとWOW64をつなぐwowia32x.dllを利用してItaniumでx86を実行できるようにした
x86_64のWOW64でも基本的な仕組みは同じで、32bit版 kernel32.dllがwow64.dll経由で64bit版 kernel32.dllへの
呼び出し等を行うが、x86_64 CPUにはx86互換モードがあるので、64bitモードと32bitモードを切り替える
wow64cpu.dllを利用して、x86_64でx86を実行している
64bit ARM Windowsでも同じで、32bit版 kernel32.dllを書き換える等は同じで、64bit ARM AArch64 CPUの32bit
AArch32互換機能をwowarmhw.dllを利用してAArch64でAArch32を実行し、32bit x86バイナリはx86エミュレータの
xtajit.dllを利用してAArch64でx86を実行している
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.461s*