Why does the MIPS stack pointer need to be kept double word aligned?
<p>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.</p>

<p>But then I read that <strong>a stack frame needs to be a multiple of 8, because the stack pointer needs to be double word aligned</strong>. Why?</p>

<p>I understand everything in the attached image, except the reason for adding empty space to pad the stack to a multiple of 8 bytes.</p>

<p><a href="https://i.stack.imgur.com/HfneY.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/HfneY.png" alt="Stack Frame"></a></p>

<p>EDIT: One source for where I read this was <a href="http://acm.sjtu.edu.cn/w/images/d/db/MIPSCallingConventionsSummary.pdf" rel="nofollow noreferrer">here</a>, page 3, bullet 4. The other was Computer Organization &amp; 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.</p>