comparison doc/manual/callconvs/callconv_mips64.tex @ 119:f1cc11a9eb98

- mips64 manual appendix clarifications
author cslag
date Mon, 04 Jul 2016 00:59:59 +0200
parents 4a64b733dc76
children d203ba52c246
comparison
equal deleted inserted replaced
118:f0437f85091b 119:f1cc11a9eb98
65 65
66 \begin{itemize} 66 \begin{itemize}
67 \item Stack grows down 67 \item Stack grows down
68 \item Stack parameter order: right-to-left 68 \item Stack parameter order: right-to-left
69 \item Caller cleans up the stack 69 \item Caller cleans up the stack
70 \item first 8 integers (<= 64-bit)are passed in registers \$a0-\$a7 70 \item first 8 params \textgreater=\ 64-bit are passed in registers \$a0-\$a7 for integers and \$f12-\$f19 for floats - with mixed float and int parameters,
71 \item first 8 floating point arguments (single or double precision) are passed in registers \$f12-\$f19 71 some registers are left out (e.g. first parameter ends up in \$a0 or \$f12, second in \$a1 or \$f13, etc.)
72 \item if either integer or float registers are used up, the stack is used 72 \item subsequent arguments are pushed onto the stack
73 \item all stack entries are 64-bit aligned 73 \item all stack entries are 64-bit aligned
74 \item all stack regions are 16-byte aligned
74 \item results are returned in \$v0, and for a second one \$v1 is used 75 \item results are returned in \$v0, and for a second one \$v1 is used
75 \item float arguments passed in the variable part of a vararg call are passed like integers 76 \item float arguments passed in the variable part of a vararg call are passed like integers
76 \end{itemize} 77 \end{itemize}
77 78
78 \paragraph{Stack layout} 79 \paragraph{Stack layout}
79 80
80 Stack directly after function prolog:\\ 81 Stack directly after function prolog:\\
82 @@@ WIP, might be wrong
81 83
82 \begin{figure}[h] 84 \begin{figure}[h]
83 \begin{tabular}{5|3|1 1} 85 \begin{tabular}{5|3|1 1}
84 \hhline{~-~~} 86 \hhline{~-~~}
85 & \vdots & & \\ 87 & \vdots & & \\
90 \hhline{~-~~} 92 \hhline{~-~~}
91 \mrlbrace{3}{parameter area} & \ldots & \mrrbrace{3}{stack parameters} & \\ 93 \mrlbrace{3}{parameter area} & \ldots & \mrrbrace{3}{stack parameters} & \\
92 & \ldots & & \\ 94 & \ldots & & \\
93 & \ldots & & \\ 95 & \ldots & & \\
94 \hhline{~=~~} 96 \hhline{~=~~}
95 register save area & padding? @@@ & & \mrrbrace{7}{current frame} \\ 97 register save area & padding & & \mrrbrace{7}{current frame} \\
96 & \$ra & & \\ 98 & \$ra & & \\
97 & \$s8 & & \\ 99 & \$s8 & & \\
98 & \$gp & & \\ 100 & \$gp & & \\
99 \hhline{~-~~} 101 \hhline{~-~~}
100 local data & & & \\ 102 local data & & & \\