Today I learned that x86 has a floating point version of the `nop` instruction, called `fnop`. It does nothing, but unlike the regular `nop` it uses the floating point unit to do nothing.
@acqrel please tell me there are simd variants too
@ethan Not that I'm aware of. But the regular `nop` can take a memory operand like `nop dword ptr [rax]` if you want a `nop` that does nothing with the address.

@acqrel @ethan https://elixir.bootlin.com/linux/v6.13.7/source/arch/x86/include/asm/nops.h#L41 has a collection of nops by length, from 1 byte up to 11 bytes

and Linux has code for optimizing adjacent nops into bigger nops: https://elixir.bootlin.com/linux/v6.13.7/source/arch/x86/kernel/alternative.c#L223

nops.h - arch/x86/include/asm/nops.h - Linux source code v6.13.7 - Bootlin Elixir Cross Referencer

Elixir Cross Referencer - source code of Linux v6.13.7: arch/x86/include/asm/nops.h

@acqrel @ethan Does this mean one can smuggle data inside nops operands/variants? 
@squeakable @acqrel I would be super interested if there's been a practical instance of nop stenography
@acqrel @ethan There's also `lock xchg eax, eax` if you want to crash some old systems (f00f bug). Which does nothing, but with the memory bus locked. The bug in those old systems was that it unlocked the memory bus when it did a thing, but since this does nothing it never does.