I have read this in a couple of places, but without fully understanding why. I understand why all instructions have to be word aligned to 4 bytes in MIPS32.
But then I read that a stack frame needs to be a multiple of 8, because the stack pointer needs to be double word aligned. Why?
I understand everything in the attached image, except the reason for adding empty space to pad the stack to a multiple of 8 bytes.
EDIT: One source for where I read this was here, page 3, bullet 4. The other was Computer Organization & Design, 5th Edition, by Patterson and Hennessey, Appendix A.6, under the Procedure Call Example. However, it's pretty clear to me now I was mistaken to assume they were talking about MIPS32.