There appears to be no definitive standardized stack frame and C language calling conventions (register usage and such) for the MIPS-32 Processor Architecture. That is, it appears to be completely up to the assembler/compiler tool chain to define their own stack frame and calling conventions. I've struggled to find a definitive reference of what conventions the GCC compiler uses for MIPS-32 instruction set. I'm specially using GCC cross-compiler on Cygwin that targets a MIPS-32 core being used in an embedded environment on the eCos open source kernel.
Any references to definitive documentation about GCC for MIPS-32 in this area would be appreciated.
You are right, this is a bit of a mess and is poorly documented. I would recommend:
- http://math-atlas.sourceforge.net/devel/assembly/mipsabi32.pdf
- "See MIPS Run" by Dominic Sweetman
- Examining disassembled code generated by the compiler to check for discrepancies with the above references.
Does this reference on MIPS EABI for RedHat Linux help?
I'm not into MIPS, but maybe this MIPS ABI History reference might help.
来源:https://stackoverflow.com/questions/811424/gcc-mips-32-calling-conventions-stack-frame-definition