Mercurial > pub > dyncall > dyncall
changeset 304:6869d834a847
- mips32 doc
author | Tassilo Philipp |
---|---|
date | Wed, 23 May 2018 11:39:40 +0200 |
parents | c81374ac9fba |
children | b104c5beec8b |
files | doc/manual/callconvs/callconv_mips32.tex |
diffstat | 1 files changed, 5 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/doc/manual/callconvs/callconv_mips32.tex Wed May 23 11:29:44 2018 +0200 +++ b/doc/manual/callconvs/callconv_mips32.tex Wed May 23 11:39:40 2018 +0200 @@ -125,10 +125,10 @@ \hline {\bf \$0} & {\bf \$zero} & hardware zero \\ {\bf \$1} & {\bf \$at} & assembler temporary \\ -{\bf \$2-\$3} & {\bf \$v0-\$v1} & return value (only integer, on hard-float targets), scratch \\ -{\bf \$4-\$7} & {\bf \$a0-\$a3} & first arguments (only integer, on hard-float targets), scratch\\ +{\bf \$2-\$3} & {\bf \$v0-\$v1} & return value (only integer on hard-float targets), scratch \\ +{\bf \$4-\$7} & {\bf \$a0-\$a3} & first arguments (only integer on hard-float targets), scratch\\ {\bf \$8-\$15,\$24} & {\bf \$t0-\$t7,\$t8} & temporaries, scratch \\ -{\bf \$25} & {\bf \$t9} & temporary, hold the address of the called function for all PIC calls (by convention) \\ +{\bf \$25} & {\bf \$t9} & temporary, holds address of called function for PIC calls (by convention) \\ {\bf \$16-\$23} & {\bf \$s0-\$s7} & preserved \\ {\bf \$26,\$27} & {\bf \$k0,\$k1} & reserved for kernel \\ {\bf \$28} & {\bf \$gp} & global pointer, preserved by caller \\ @@ -158,8 +158,9 @@ \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 \item only on hard-float targets: if any arguments are passed via float registers, skip \$a0-\$a3 for subsequent arguments as if the values were passed via them \item only on hard-float targets: note that if the first argument is not a float, but the second, it'll get passed via the \$a? registers -\item results are returned in \$v0 and \$v1, with \$v0 for all values < 64bit (only integer, on hard-float targets) +\item results are returned in \$v0 and \$v1, with \$v0 for all values < 64bit (only integer on hard-float targets) \item only on hard-float targets: floating point results are returned in \$f0 (32-bit float), or \$f0 and \$f3 (64bit float) +\item single precision float parameters (32 bit) are right-justified in their 8-byte slot on the stack on big endian targets, as they aren't promoted @@@ \end{itemize} \paragraph{Stack layout}