No Kogling. At least in the consumer space that is simply not true. Upgrading to a 64 bit CPU+OS
x64 on a PC means more registers than it's x86 counterpart, and the case is the same for ARM by the looks of it.
So an ARM (64bit) processor would (potentially) emulate an x86 application more efficiently because it doesn't need to use the stack as much by keeping as much as it can in registers. An emulator for x86 on ARM (32bit) would have less registers to play with, and therefore be more restricted due to higher memory usage.
AFAIK the move over to x64 made most windows calls become "fastcall" over "stdcall" which, depending on the architecture is generally faster.
The best way to prove this to yourself is to take a 64 bit CPU and benchmark the 64 bit and 32 bit versions of the same OS (the 32 bit version can't exploit any of the 64 bit extensions
So to be clear x64 doesn't emulate instructions from x86 to x64, it runs the code natively.
On an ARM, regardless of 32bit or 64bit, the x86 instruction has to be converted to native ARM instructions. ARM64 would have more registers to play with for a start to make it more feasible, as indicated above.
You can't treat ARM's x86 emulation the same as x64, since x64 IS native execution via backwards compatibility in the architecture.
Ehem... except full Windows 10 on ARM won't be 32 bit! It's already been confirmed by MS that it must be the 64 bit version, precisely for the reasons I mentioned
which isn't my point, it's speculative on the basis that emulation requires 64bit processors. The idea is you compare the feasibility of x86 emulation on a 32bit ARM vs 64bit ARM. 64bit ARM has a clear advantage on usable registers alone.
Hence my original point, older 32bit ARMs probably couldn't emulate x86 because the lack of registers meant a significant loss of performance having to constantly swap out.
.The parts about WOW64 being involved in emulation and translation are already confirmed for example.
it really doesn't matter what is doing the emulation.
WOW64 is software, therefore WOW64 = software based emulation. Software is emulating it whether they make it part of WOW64 or call it WOW-ARM64 or potato.
Being WOW or not doesn't change anything. It's still software emulation. WOW64 is just better for developers i guess? and its still true to it's name.
How exactly emulation works I don't yet know. I've been trying to find out but MS is as tight lipped as ever.
I'm only going on my knowledge of assembly programming which includes reading AMD processor specifications (the one for people wanting to make OSes and drivers) and also microsoft's documentation on x64 programming, which included WOW64.
but: "how does WOW64 emulate x86" into google.
How Windows 64-bit Supports 32-bit Applications | Gizmo's Freeware
"Under Windows 64-bit, 32-bit applications run on top of an emulation of a 32-bit operating system that is called Windows 32-bit on Windows 64-bit, or WOW64 for short.*
WOW64 intercepts all operating system calls made by a 32-bit application.
For each operating system call made,
WOW64 generates native 64-bit system calls, converting 32-bit data structures into 64-bit aligned structures. The appropriate native 64-bit system call is passed to the operating system kernel, and any output data from the 64-bit system call is converted into a format appropriate for the calling application before being passed back."
--------------
this is basically converting standard call to and from fast call, and 32bit values to and from 64bit.
------------
Lesson 2. Support of 32-bit applications in the 64-bit Windows environment
"Different processor architectures have a bit different WoW64. For example, the 64-bit Windows version developed for Intel Itanium 2 processor, employs WoW64 to
emulate x86 instructions. This emulation is rather resource-intensive in comparison to WoW64 for Intel 64 architecture, because the system has to switch from the 64-bit mode to compatibility mode when executing 32-bit programs
WoW64 on Intel 64 (AMD64 / x64)
does not require instruction emulation. In this case the WoW64 subsystem emulates only the 32-bit environment through an additional layer between a 32-bit application, and the
64-bit Windows API"
---------------------
Some of the earlier Itanium had x86 hardware support, all the modern ones are purely software emulation as far as i can see.
If the instructions are not being translated from x86 to ARM, then would you mind explaining what you think is executing those instructions
The x64 is backward compatible with x86 as part of the architecture. All the x86 parts (registers, etc) are just widened to 64bits.
the irony is the x86 is backwards compatible with the previous 16bit architecture of DOS? days. When a x64 CPU is booting up, it's in the 16bit mode, the bootloader enables the A20 gate, thus enabling 32bit mode, then from 32bit mode it switches to long mode (if my memory serves me right) and then you have access to 64bit processor functions.
ARM would need x86 instruction translated into ARM native code.
My point above was to try (further) stress that WOW64 on an x64 is native x86 execution and only serves as a windows API translation. Itanium is a special case where it does actually provide emulation of the x86 instruction sets.
x86 on ARM would need the x86 instruction set to be emulated.
but this all boils down to the fact that it's done via software in WOW64, not hardware, and if you exclude the Itanium special case, instruction set emulation is entirely different to the main bulk of what WOW64 does on standard computers.
So to clarify,
x86 on ARM needs emulation. Emulation on windows with
x64 (not ARM)
as of current is only for system calls (excluding itanium)
whereas ARM will be requiring x86 instruction emulation.
Reading, decoding and translating
of x86 into ARM is likely to need the use of many CPU registers to make it within reasonable performance levels. ARM64 bit has more registers at hand, therefore one of the defining characteristics of support of x86 emulation is a 64bit processor.
my 2 cents