1. Just off the top of my head, a bunch of code can be made more efficient by keeping values stored in registers instead of reloading or recalculating them, and re-ordering code to remove nops can help quite a bit as well. Getting a good understanding of what the code is doing in each case gives a good idea of which parts of it seem to be unnecessary.
2. Generally speaking, it's absolutely not safe, and it should be assumed that a crash would result. This will usually corrupt the stack pointer and saved register values, unless you've accounted for that. It can be made to work in very specialized cases with the right (hacky) setup.
2. Generally speaking, it's absolutely not safe, and it should be assumed that a crash would result. This will usually corrupt the stack pointer and saved register values, unless you've accounted for that. It can be made to work in very specialized cases with the right (hacky) setup.