Mercurial > pub > dyncall > dyncall
comparison doc/manual/callconvs/callconv_ppc32.tex @ 238:05181c5a6edd
- ppc32 doc tweak
author | Tassilo Philipp |
---|---|
date | Tue, 02 May 2017 03:00:55 +0200 |
parents | f1fc1c836baf |
children | cde7b1f3b8f2 |
comparison
equal
deleted
inserted
replaced
237:98503af08916 | 238:05181c5a6edd |
---|---|
47 Name & Brief description\\ | 47 Name & Brief description\\ |
48 \hline | 48 \hline |
49 {\bf gpr0} & scratch\\ | 49 {\bf gpr0} & scratch\\ |
50 {\bf gpr1} & stack pointer\\ | 50 {\bf gpr1} & stack pointer\\ |
51 {\bf gpr2} & scratch\\ | 51 {\bf gpr2} & scratch\\ |
52 {\bf gpr3} & return value, parameter 0 if integer or pointer\\ | 52 {\bf gpr3,gpr4} & return value, parameter 0 and 1 for integer or pointer\\ |
53 {\bf gpr4-gpr10} & return value, parameter 1-7 for integer or pointer parameters\\ | 53 {\bf gpr5-gpr10} & parameter 2-7 for integer or pointer parameters\\ |
54 {\bf gpr11} & permanent\\ | 54 {\bf gpr11} & permanent\\ |
55 {\bf gpr12} & branch target for dynamic code generation\\ | 55 {\bf gpr12} & branch target for dynamic code generation\\ |
56 {\bf gpr13-31} & permanent\\ | 56 {\bf gpr13-31} & permanent\\ |
57 {\bf fpr0} & scratch\\ | 57 {\bf fpr0} & scratch\\ |
58 {\bf fpr1-fpr13} & parameter 0-12 for floating point (always double precision)\\ | 58 {\bf fpr1} & floating point return value, floating point parameter 0 (always double precision)\\ |
59 {\bf fpr2-fpr13} & floating point parameters 1-12 (always double precision)\\ | |
59 {\bf fpr14-fpr31} & permanent\\ | 60 {\bf fpr14-fpr31} & permanent\\ |
60 {\bf v0-v1} & scratch\\ | 61 {\bf v0-v1} & scratch\\ |
61 {\bf v2-v13} & vector parameters\\ | 62 {\bf v2-v13} & vector parameters\\ |
62 {\bf v14-v19} & scratch\\ | 63 {\bf v14-v19} & scratch\\ |
63 {\bf v20-v31} & permanent\\ | 64 {\bf v20-v31} & permanent\\ |
71 \end{table} | 72 \end{table} |
72 | 73 |
73 \paragraph{Parameter passing} | 74 \paragraph{Parameter passing} |
74 | 75 |
75 \begin{itemize} | 76 \begin{itemize} |
76 \item stack parameter order: right-to-left@@@? | 77 \item stack parameter order: right-to-left |
77 \item caller cleans up the stack@@@? | 78 \item caller cleans up the stack |
78 \item the first 8 integer parameters are passed in registers gpr3-gpr10 | 79 \item the first 8 integer parameters are passed in registers gpr3-gpr10 |
79 \item the first 12 floating point parameters are passed in registers fpr1-fpr13 | 80 \item the first 12 floating point parameters are passed in registers fpr1-fpr13 |
80 \item if a float parameter is passed via a register, gpr registers are skipped for subsequent integer parameters (based on the size of | 81 \item if a float parameter is passed via a register, gpr registers are skipped for subsequent integer parameters (based on the size of |
81 the float - 1 register for single precision and 2 for double precision floating point values) | 82 the float - 1 register for single precision and 2 for double precision floating point values) |
82 \item the caller pushes subsequent parameters onto the stack | 83 \item the caller pushes subsequent parameters onto the stack |