Reply to post:

Windows on ARM: It's nearly here (again)

AndersBreiner

It's because the emulation is part of Windows on Windows.

Back in the NT 3.x days they supported Win32 code via the Win32 API in the kernel and Win16 code via WOW. On x86 the code was both the Win32 code and the Win16 code in WOW could be run natively by setting the processor up in the right mode and WOW was mostly a thunking layer. On Risc platforms - PowerPC, Mips, Alpha - WOW had a x86 emulator which they licensed from Insignia called SoftPC. So back then if you had a Win32 app it needed to be compiled natively, which of course was unlikely for the Risc platforms.

It's the same now, though I believe the x86 emulator is in house. So 64 bit apps must be native and call 64 bit APIs. 32 bit apps go through WOW. On an x64 chip that's a thunking layer. On a Risc platform they use an emulator. Though from what they're saying they're going to JIT code in their in house x86 on ARM emulator.

Back in the NT 3.x days Dec actually did produce a clever emulator called FX!32 which emulated initially but later JITted the most frequently emulated Win32 x86 code ended up native Alpha. There is/was actually a hook in the Windows loader to allow this - it calls out if it is asked to load a Win32 PE file compiled for the wrong architecture. FX!32 used that to do it's 'emulate and profile first, then JIT the performance critical parts' magic.

However for Microsoft have decided to stick with the 'put the emulator only in the WOW path' for some reason and not do a FX!32 equivalent which would run x64 binaries on ARM64.

The performance they're reporting isn't very good compared to code running natively on a Snapdragon 835 aka MSM8998. The Geekbench 3 score is about half what it should be

http://browser.geekbench.com/geekbench3/search?dir=desc&q=MSM8998&sort=score

POST COMMENT House rules

Not a member of The Register? Create a new account here.

  • Enter your comment

  • Add an icon

Anonymous cowards cannot choose their icon