The most annoying thing is the exception handling restrictions - if you touch the stack pointer you are supposed to set up a frame pointer, have properly formed epilogs/prologs and make sure the special exception handling data is included in the binary. (I say "supposed to" because it will still run without it but if an exception/crash happens the app will be immediately terminated, even if an exception handler is meant to catch it.)
MS gets the middle finger for keeping rsi/rdi non-volatile as well.
|