logoalt Hacker News

Assembly Hall of Shame

174 pointsby piotrgrabowskitoday at 6:01 PM36 commentsview on HN

Comments

simonebrunozzitoday at 10:09 PM

Related, somehow: Core War [0].

[0]: https://en.wikipedia.org/wiki/Core_War

monocasatoday at 9:08 PM

It says in the rules

> Trapped/emulated/virtualized instructions may only time the trap, not the handler.

But I feel like that 12ms write to an ACPI IO port at current leaderboard position 8 is probably trapping to SMM and being handled there.

Retr0idtoday at 7:35 PM

Related, and linked in the readme: https://github.com/xoreaxeaxeax/smiiiiiiiiiiiiiiii (using the slow instructions to break SMI)

show 1 reply
layer8today at 7:31 PM

Nop should be #1, because it is infinitely slow for what it does. ;)

show 2 replies
TomatoCotoday at 6:46 PM

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

michalsustrtoday at 7:44 PM

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?

show 3 replies
markus_zhangtoday at 8:52 PM

Does that mean Chris Domas is ready for his next adventure?

metadattoday at 6:47 PM

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?

show 2 replies
spoocecowtoday at 7:19 PM

Oh wow, glad to see Chris Domas active online again!

codeshauntedtoday at 6:48 PM

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

show 1 reply
vardumptoday at 6:33 PM

A great resource for any performance deoptimization.

IshKebabtoday at 8:29 PM

Using MMIO is cheating and makes the results very boring.

It would be much more interesting to know the results if you're only allowed to use main memory.

achieriustoday at 6:49 PM

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.

arn3ntoday at 6:45 PM

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.

2_foos_in_a_bartoday at 6:37 PM

[dead]