Assembly Hall of Shame

(github.com)

80 points | by piotrgrabowski 1 hour ago

11 comments

  • michalsustr 8 minutes ago
    Very cool! Also, huh interesting. I’ve used rdtsc to measure cycle diffs but had no idea its execution takes that long. Is that common across architectures?
    • inigyou 0 minutes ago
      AFAIK it acts as some kind of execution barrier, to give a meaningful time.
  • Retr0id 18 minutes ago
    Related, and linked in the readme: https://github.com/xoreaxeaxeax/smiiiiiiiiiiiiiiii (using the slow instructions to break SMI)
  • layer8 21 minutes ago
    Nop should be #1, because it is infinitely slow for what it does. ;)
    • jooops1 16 minutes ago
      It increments rip by one.
  • spoocecow 33 minutes ago
    Oh wow, glad to see Chris Domas active online again!
  • TomatoCo 1 hour 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 1 hour ago
    what im seeing from this chart is that we should be using the nop instruction for everything
    • bee_rider 51 minutes ago
      Well the best code is no code. Nop could be second best though.
  • vardump 1 hour ago
    A great resource for any performance deoptimization.
  • arn3n 1 hour 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.
  • achierius 1 hour 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.

  • 2_foos_in_a_bar 1 hour ago
    [dead]
  • metadat 1 hour 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?

    • summarybot 7 minutes ago
      The OS should do less not more
    • mwigdahl 8 minutes ago
      Wirth's Law I believe.
    • HappyPanacea 1 hour ago
      The new windows notepad is a disgrace
    • LoganDark 1 hour ago
      Huh? A millisecond is an eternity!
      • m463 23 minutes ago
        I remember reading once somewhere:

        If some app responds in 10ms or less, it is INTERACTIVE.

        makes you think.