The scourge of x86 emulation

(fex-emu.com)

125 points | by dagmx 5 hours ago ago

19 comments

  • sureglymop 8 minutes ago ago

    Slightly related but this project (FEX) is amazing. I've been running Armada OS on multiple ARM handhelds and they're viable little linux machines now except with amazing battery life.

    Most problems I run into are anti cheat related (EAC, etc.) but those can be circumvented for now. Feels kind of insane how far x86 emulation has come.

  • dagmx 3 hours ago ago

    For reference , Fex is a translation framework for x86 to ARM much like Apple’s Rosetta2 and Microsoft’s Prism.

    Valve sponsor development as it’s also the way the new Steam Frame supports x86 games. It’s also being used (as a fork) in Crossover Beta to replace the use of Rosetta2.

    • MiroslavPokorny 2 hours ago ago

      Why doesnt Stream require their binaries to be compiled to some bytecode and transpiled during the install ?

      THen they wouldnt require any emulator for any new compiles.

      • swiftcoder an hour ago ago

        > Why doesnt Stream require their binaries to be compiled to some bytecode and transpiled during the install ?

        They still have to support the entire back-catalog. It's not reasonable to expect thousands of existing games to port to ARM

        • DanielHB 39 minutes ago ago

          This is what Android does with Dalvik/Android Runtime. Apps you download from the store are compiled to bytecode that is then compiled to native code at installation time.

          With the compilation making use of the native instruction set supported for your device, so it can make use of newer arm instructions on newer devices while still supporting older devices.

          This is the major reason app installation is so slow in Android compared to iOS (which pre-compiles everything). But it also greatly improves app compatibility with older versions.

          There is no way Valve would be able to convince all the myriad of game engine developers to support a proprietary (or even open source) bytecode format even in the future. Best they could do is make it an opt-in.

          Android only pulled it off because Google provides the "engine" (Android SDK) for all apps made for the platform and it did from the start.

          And even so, most Androids games actually bypass this system entirely and just hand-compile to native binaries anyway. Because, again, the game engines don't want to support this bytecode format and google doesn't offer a C++ toolchain themselves that the engine developers could integrate with.

          • dezgeg 24 minutes ago ago

            Games use plenty of native code; so much in fact that when Intel tried to enter the Android tablet market with x86 they had to write an ARM emulator.

      • rwmj an hour ago ago

        I don't know, but assumed that Valve doesn't require studios to recompile their software or use any special tooling, it's basically just packaging of existing executables. This is also why they do Windows on Linux emulation.

      • account42 43 minutes ago ago

        Because even with their effective monopoly they don't have the power to bully developers into doing whatever suits Valve. And it would be disastrous for the industry if they did.

      • cwillu an hour ago ago

        Several games in their library are actually just game updater/launcher binaries, which manage their associated game assets and binaries externally.

      • matheusmoreira an hour ago ago

        Existing games will not be recompiled for the new bytecode target, and they want all of those games to work regardless.

      • raverbashing 25 minutes ago ago

        They do

        x86 bytecode is bytecode

      • SSLy an hour ago ago

        because there's no gaming-oriented toolchain for it

  • pdw 24 minutes ago ago

    The intro of this article repeats the common assertion that

    > ARM is the most relaxed, allowing significant hardware optimizations; and x86 is the most strict, enforcing a very strong coherency model that doesn’t allow a lot of room for optimization

    but I've seen some compelling arguments that a relaxed model doesn't necessarily have much of a benefit, https://fgiesen.wordpress.com/2026/08/25/memory-ordering-in-...

  • modeless 2 hours ago ago

    As noted in the article, Apple solved this problem six years ago by simply adding an x86-compatible memory ordering mode to their chip when x86 emulation became important. Yet another way Apple's chips lead the industry.

    • saagarjha 2 hours ago ago

      Well well well “modeless” has decided to finally see the light of modes

    • gavinsyancey an hour ago ago

      And as noted in the article, while that helps a lot with most of the issues, there are some corner-cases they still don't handle.

    • karel-3d 25 minutes ago ago

      The word "simply" is doing a lot of work there

  • asksomeoneelse 2 hours ago ago

    Great article ! This is the kind of content I always hope to find on HN's front page.

    I really wonder how things are organized at Apple to allow for vertical integration to work so well. That feature alone must have involved so many people from so many different teams.