gravatar

run exe on linux in mac?

在 oikos 看到的,似乎有人認為裝 linux 就可以執行 exe 檔。也就是說裝 linux 然後透過 wine 就可以在 apple powerpc 上執行 windows exe。這應該是很荒謬的錯誤,而且也是一般人搞不清楚 wine 跟 virtual pc / vmware 的差別。在 x86 上,當然裝上 linux 後,雖然作業系統是 linux,但是背後執行 instruction 的 cpu 還是那顆 x86,跟 windows 一樣,所有指令都要透過 x86 cpu 執行。因此才有人想在 linux 上只要模擬 windows API 環境,然後透過 protected mode 和 virtual machine 方式來讓 x86 也執行 windows exe 裡面的 binary code。因為是給同一種 x86 執行的 binary code,所以可以這樣搞,而且執行的速度並不會差太多。但是很明顯的 apple 的 powerpc 架構,cpu instruction 就是跟 x86 有天壤之別,因此不論透過怎樣的模擬,對於 instruction code 的執行部份還是得夠過模擬的方式來執行,儘管可以把視窗的 API 或是 runtime subroutine 都寫成 Mac OS X 或是 darwin for PPC 的 code 沒問題。但是對於指令還是得透過模擬,因此執行速度還是非常的慢。當然如果使用 Virtual PC 模擬的話,是需要模擬整台電腦的 architecture 以及執行 guest 上的 OS 像是 windows,如此一來記憶體需要很大,硬碟需求量也大,而且模擬複雜度增加。因此就有 darwine 這類的東西出現,直接把 windows API 寫成 Mac OS X 上的 code,對於 binary instruction code 還是透過模擬方式,雖然執行效率上並無增加很多,但是對於所需的記憶體以及不需要完整的 guest OS 來說是相當的經濟和實用。