Hello, I recently tried to find out how the avr-gcc frame layout (stack layout) looks like. I couldn't find any official documentation about this or is there an *avr-gcc internals* manual I have not found yet? I've created a figure [1] showing the stack after a CALL instruction and how I think it works. I have assumed that avr-gcc was called with -O0. I understand that the optimizer removes instructions if they are not needed. There are a few things I am not sure about:
- In which order is the return address saved on the stack? Unfortunately there is no hint about that in the description of the CALL instruction. I assumed that the high byte is pushed before the low byte, correct? Is it the same on devices with 22bit PC? - What is the right terminology? Frame Layout, Stack Layout, Activation Record? In my understanding the epilogue is used to save call-saved registers (and the frame pointer Y) as well as reserving memory for function arguments and local variables (that is the actual frame, right?) on the stack. Storing the content of the argument registers on the stack is not really a part of the prologue. I hope I got it right, feedback appreciated :). Anyway, maybe some of these informations should be added to the docs. BW Josef [1]: http://web.student.tuwien.ac.at/~e0625147/FrameLayout.png _______________________________________________ AVR-GCC-list mailing list AVR-GCC-list@nongnu.org http://lists.nongnu.org/mailman/listinfo/avr-gcc-list