Assembly Hall of Shame

48 points | by piotrgrabowski an hour ago

9 comments

  • TomatoCo 29 minutes ago

    This author also has other things like: A compiler that emits only `mov` instructions and another compiler that deliberately messes with the control flow so that, if disassembled, common debuggers will draw symbols like skulls or threats. https://github.com/xoreaxeaxeax/repsych

  • codeshaunted 27 minutes ago

    what im seeing from this chart is that we should be using the nop instruction for everything

      bee_rider 13 minutes ago

      Well the best code is no code. Nop could be second best though.

  • vardump 41 minutes ago

    A great resource for any performance deoptimization.

  • achierius 25 minutes ago

    It'd be really interesting to see whether the winning (losing?) instructions/strategies would be different on other architectures. At least right now the top spot (`fxrstor64` on MMIO, starve PCIe) seems relatively architecture-independent, but maybe something about MMIO ordering rules on e.g. POWER would be different enough to change that -- or perhaps open up new avenues?

    I wonder what the actual limit on this `fxrstor64` is right now. If you can stall the PCIe bus for that long, then why not indefinitely? Certainly there's no forward progress guarantee here.

  • arn3n 30 minutes ago

    There’s definitely strategies here; A lot of the floating point operations use subnormals, and a lot of the worst instructions are slowed down by really, really fucking with MMIO.

  • metadat 27 minutes ago

    It’s crazy how computers still seem to get perceivably slow every few years, given how many instructions can be executed in 1ms. Shameful, even..

    What’s that law called about programmers wasting all the compute on abstraction?

      HappyPanacea 25 minutes ago

      The new windows notepad is a disgrace

      LoganDark 25 minutes ago

      Huh? A millisecond is an eternity!