Low level code can and should use assembly to get the precise effect they desire in these cases.
That would be pretty cumbersome though. If you're targeting N different architectures, you would have to write N different assembly blocks.
I shouldn't need to drop to assembly to get an infinite loop that works!
Why not just allow infinite loops instead of having me write assembly for it though?