Mercurial > pub > dyncall > dyncall
comparison doc/manual/callconvs/callconv_mips32.tex @ 305:b104c5beec8b
- softfloat support for mips64/n64 abi
author | Tassilo Philipp |
---|---|
date | Wed, 23 May 2018 11:41:34 +0200 |
parents | 6869d834a847 |
children | a1fcb3e02270 |
comparison
equal
deleted
inserted
replaced
304:6869d834a847 | 305:b104c5beec8b |
---|---|
148 | 148 |
149 \begin{itemize} | 149 \begin{itemize} |
150 \item Stack grows down | 150 \item Stack grows down |
151 \item Stack parameter order: right-to-left | 151 \item Stack parameter order: right-to-left |
152 \item Caller cleans up the stack | 152 \item Caller cleans up the stack |
153 \item Caller is required to always leave a 16-byte spill area for \$a0-\$a3 at the and of {\bf its} frame, to be used and spilled to by the callee, if needed | 153 \item Caller is required to always leave a 16-byte spill area for \$a0-\$a3 at the end of {\bf its} frame, to be used and spilled to by the callee, if needed |
154 \item The different stack areas (local data, register save area, parameter area) are each aligned to 8 bytes | 154 \item The different stack areas (local data, register save area, parameter area) are each aligned to 8 bytes |
155 \item generally, first four 32bit arguments are passed in registers \$a0-\$a3, respectively (only on hard-float targets: see below for exceptions if first arg is a float) | 155 \item generally, first four 32bit arguments are passed in registers \$a0-\$a3, respectively (only on hard-float targets: see below for exceptions if first arg is a float) |
156 \item subsequent parameters are passed vie the stack | 156 \item subsequent parameters are passed vie the stack |
157 \item 64-bit params passed via registers are passed using either two registers (starting at an even register number, skipping an odd one if necessary), or via the stack using an 8-byte alignment | 157 \item 64-bit params passed via registers are passed using either two registers (starting at an even register number, skipping an odd one if necessary), or via the stack using an 8-byte alignment |
158 \item only on hard-float targets: if the very first call argument is a float, up to 2 floats or doubles can be passed via \$f12 and \$f14, respectively, for first and second argument | 158 \item only on hard-float targets: if the very first call argument is a float, up to 2 floats or doubles can be passed via \$f12 and \$f14, respectively, for first and second argument |