a number of platforms have subtle differences in their implementation of the call stack that can affect the way a stack buffer overflow exploit will work. some machine architectures store the top-level return address of the call stack in a register. this means that any overwritten return address will not be used until a later unwinding of the call stack. another example of a machine-specific detail that can affect the choice of exploitation techniques is the fact that most risc-style machine architectures will not allow unaligned access to memory. combined with a fixed length for machine opcodes, this machine limitation can make the jump to esp technique almost impossible to implement (with the one exception being when the program actually contains the unlikely code to explicitly jump to the stack register).