Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Microsoft says it themselves and who are we to disagree? https://msdn.microsoft.com/en-us/library/windows/desktop/aa3...

"WOW64 is the x86 emulator that allows 32-bit Windows-based applications to run seamlessly on 64-bit Windows".



"Wine Is Not an Emulator" -> WINE

"WINdows Emulator" -> WINE

I've seen both interpretations be used.

In this case, "minimal hypervisor and address space translation layer" (more or less - I've no idea exactly what it does) is somewhat harder to remember.

I think they were going for "simplest/shortest word that gets the point across" since that document is likely to be read by people leaning more toward executive/high-level positions as opposed to the detail-jugglers who shout at bare metal all day.


Address space translation is not a small thing to do in the win32 API. Not only do you need to translate pointer parameters and return values for thousands of API function calls, you also need to translate pointers in (possibly nested) structures, and also to do the same for each and every possible window message, where the general message payload may be any one of a combination of integers, pointers, and structures of (structures of) pointers. The pointers may be data pointers where the pointed-to object may be data such as a string that needs to be readable and writable from either side of the address space, or functions that can be called from either side.

See for example this effort at writing a win16 thunking layer in c# https://medium.com/@CantabileApp/implementing-window-messagi...


Why would you do that? They can just include the 32-bit libraries.

Wine works by changing enough of the windows system that the libraries can communicate with the host operating system.

Microsoft already has the 32-bit libraries, 'all' they have to do is make sure the parts of the libraries that interface with the rest of the system do the translation, which is much less work and a reasonably well defined edge.


eeeeee

Wow. Now I'm wondering whether WoW64 does all that, then - one missed API call reference or data structure and boom goes the 32-bit app.

I actually forgot memory managers were a thing when I was writing the parent comment, and momentarily thought the lack of address space translation would mean all 32-bit processes were stuck in the first 4GB of RAM. AST is indeed more of a thunking issue.

Thanks for the info about Win3emu, that's awesome!


What does WOW64 have to do with WINE?


It's a very similar context where the word "emulator" is often erroneously used to describe how it works. It's the first thing I thought of when I read "WOW64 is the x86 emulator..."


To be precise, Win64 for Itanium contained a binary blob provided by Intel, which worked as an x86 emulator. I think some Itaniums used it and others had hardware to run x86 code.


Yeah, thats correct. The some (most?) of the first series (merced) of itaniums had hardware to help accelerate the emulation of x86 instructions. I don't know about the later iterations of it though as I've only run OpenVMS on the later ones and not Windows.


The early Itaniums had hardware support for x86; the later ones relied on software emulation that outperformed the previous hardware support.


Did anyone know what "WOW" stands for?

To me it sounds like somebody fluked it to work and said "wow, it works" and then they called it that!


>WOW

Windows on Windows




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: