Mercurial > pub > dyncall > dyncall
annotate doc/disas_examples/ppc.darwin.disas @ 497:cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
author | Tassilo Philipp |
---|---|
date | Wed, 23 Mar 2022 15:24:31 +0100 |
parents | ead041d93e36 |
children | fc614cb865c6 |
rev | line source |
---|---|
327
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
1 ; #include <stdlib.h> |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
2 ; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
3 ; void leaf_call(int b, int c, int d, int e, int f, int g, int h) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
4 ; { |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
5 ; } |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
6 ; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
7 ; void nonleaf_call(int a, int b, int c, int d, int e, int f, int g, int h) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
8 ; { |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
9 ; /* use some local data */ |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
10 ; *(char*)alloca(220) = 'L'; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
11 ; leaf_call(b, c, d, e, f, g, h); |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
12 ; } |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
13 ; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
14 ; int main() |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
15 ; { |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
16 ; nonleaf_call(0, 1, 2, 3, 4, 5, 6, 7); |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
17 ; return 0; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
18 ; } |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
19 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
20 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
21 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
22 ; output from darwin-8.0.1-ppc w/ gcc 3.3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
23 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
24 _leaf_call: |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
25 0: bf c1 ff f8 stmw 30, -8(1) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
26 4: 94 21 ff d0 stwu 1, -48(1) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
27 8: 7c 3e 0b 78 mr 30, 1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
28 c: 90 7e 00 48 stw 3, 72(30) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
29 10: 90 9e 00 4c stw 4, 76(30) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
30 14: 90 be 00 50 stw 5, 80(30) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
31 18: 90 de 00 54 stw 6, 84(30) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
32 1c: 90 fe 00 58 stw 7, 88(30) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
33 20: 91 1e 00 5c stw 8, 92(30) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
34 24: 91 3e 00 60 stw 9, 96(30) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
35 28: 80 21 00 00 lwz 1, 0(1) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
36 2c: bb c1 ff f8 lmw 30, -8(1) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
37 30: 4e 80 00 20 blr |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
38 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
39 _nonleaf_call: |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
40 34: 7c 08 02 a6 mflr 0 ; | lr -> gpr0 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
41 38: bf c1 ff f8 stmw 30, -8(1) ; | store gpr{30,31} |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
42 3c: 90 01 00 08 stw 0, 8(1) ; | prolog store lr |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
43 40: 94 21 ff b0 stwu 1, -80(1) ; | open frame and store sp at top of stack |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
44 44: 7c 3e 0b 78 mr 30, 1 ; / sp -> gpr30, latter used for some fixed addressing below |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
45 48: 90 7e 00 68 stw 3, 104(30) ; \ |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
46 4c: 90 9e 00 6c stw 4, 108(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
47 50: 90 be 00 70 stw 5, 112(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
48 54: 90 de 00 74 stw 6, 116(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
49 58: 90 fe 00 78 stw 7, 120(30) ; | all in args -> spill area in prev frame |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
50 5c: 91 1e 00 7c stw 8, 124(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
51 60: 91 3e 00 80 stw 9, 128(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
52 64: 91 5e 00 84 stw 10, 132(30) ; | |
331 | 53 68: 80 01 00 00 lwz 0, 0(1) ; fetch back-chain ptr (parent frame's sp) from stack of top by prolog -> gpr0, and ... |
327
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
54 6c: 94 01 ff 10 stwu 0, -240(1) ; ... update it further up the stack for alloca(220) - with padding to guarantee alignment |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
55 70: 38 41 00 40 addi 2, 1, 64 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
56 74: 38 02 00 0f addi 0, 2, 15 ; | start of alloca()'d memory -> gpr2, by ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
57 78: 54 00 e1 3e srwi 0, 0, 4 ; | ... using gpr0 as helper to align to 16b, leaving at least 64b at top of stack |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
58 7c: 54 02 20 36 slwi 2, 0, 4 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
59 80: 38 00 00 4c li 0, 76 ; 'L' -> gpr0, and ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
60 84: 98 02 00 00 stb 0, 0(2) ; ... store in local area (of alloca()'d space) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
61 88: 80 7e 00 6c lwz 3, 108(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
62 8c: 80 9e 00 70 lwz 4, 112(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
63 90: 80 be 00 74 lwz 5, 116(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
64 94: 80 de 00 78 lwz 6, 120(30) ; | arg 0,1,2,3,4,5,6 (fetched from spill area from prev frame) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
65 98: 80 fe 00 7c lwz 7, 124(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
66 9c: 81 1e 00 80 lwz 8, 128(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
67 a0: 81 3e 00 84 lwz 9, 132(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
68 a4: 4b ff ff 5d bl .+67108700 ; call and put return address -> lr |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
69 a8: 80 21 00 00 lwz 1, 0(1) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
70 ac: 80 01 00 08 lwz 0, 8(1) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
71 b0: 7c 08 03 a6 mtlr 0 ; | epilog |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
72 b4: bb c1 ff f8 lmw 30, -8(1) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
73 b8: 4e 80 00 20 blr ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
74 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
75 _main: |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
76 bc: 7c 08 02 a6 mflr 0 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
77 c0: bf c1 ff f8 stmw 30, -8(1) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
78 c4: 90 01 00 08 stw 0, 8(1) ; | prolog |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
79 c8: 94 21 ff b0 stwu 1, -80(1) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
80 cc: 7c 3e 0b 78 mr 30, 1 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
81 d0: 38 60 00 00 li 3, 0 ; arg 0 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
82 d4: 38 80 00 01 li 4, 1 ; arg 1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
83 d8: 38 a0 00 02 li 5, 2 ; arg 2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
84 dc: 38 c0 00 03 li 6, 3 ; arg 3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
85 e0: 38 e0 00 04 li 7, 4 ; arg 4 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
86 e4: 39 00 00 05 li 8, 5 ; arg 5 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
87 e8: 39 20 00 06 li 9, 6 ; arg 6 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
88 ec: 39 40 00 07 li 10, 7 ; arg 7 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
89 f0: 4b ff ff 45 bl .+67108676 ; call and put return address -> lr |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
90 f4: 38 00 00 00 li 0, 0 ; return value (pointlessly) via gpr0 ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
91 f8: 7c 03 03 78 mr 3, 0 ; ... to gpr3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
92 fc: 80 21 00 00 lwz 1, 0(1) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
93 100: 80 01 00 08 lwz 0, 8(1) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
94 104: 7c 08 03 a6 mtlr 0 ; | epilog |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
95 108: bb c1 ff f8 lmw 30, -8(1) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
96 10c: 4e 80 00 20 blr ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
97 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
98 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
99 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
100 ; ------------- more than 8 int args -----------> |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
101 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
102 ; #include <stdlib.h> |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
103 ; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
104 ; void leaf_call(int b, int c, int d, int e, int f, int g, int h, int i, int j) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
105 ; { |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
106 ; } |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
107 ; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
108 ; void nonleaf_call(int a, int b, int c, int d, int e, int f, int g, int h, int i, int j) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
109 ; { |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
110 ; /* use some local data */ |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
111 ; *(char*)alloca(220) = 'L'; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
112 ; leaf_call(b, c, d, e, f, g, h, i, j); |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
113 ; } |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
114 ; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
115 ; int main() |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
116 ; { |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
117 ; nonleaf_call(0, 1, 2, 3, 4, 5, 6, 7, 8, 9); |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
118 ; return 0; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
119 ; } |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
120 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
121 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
122 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
123 ; output from darwin-8.0.1-ppc w/ gcc 3.3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
124 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
125 _leaf_call: |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
126 0: bf c1 ff f8 stmw 30, -8(1) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
127 4: 94 21 ff d0 stwu 1, -48(1) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
128 8: 7c 3e 0b 78 mr 30, 1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
129 c: 90 7e 00 48 stw 3, 72(30) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
130 10: 90 9e 00 4c stw 4, 76(30) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
131 14: 90 be 00 50 stw 5, 80(30) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
132 18: 90 de 00 54 stw 6, 84(30) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
133 1c: 90 fe 00 58 stw 7, 88(30) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
134 20: 91 1e 00 5c stw 8, 92(30) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
135 24: 91 3e 00 60 stw 9, 96(30) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
136 28: 91 5e 00 64 stw 10, 100(30) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
137 2c: 80 21 00 00 lwz 1, 0(1) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
138 30: bb c1 ff f8 lmw 30, -8(1) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
139 34: 4e 80 00 20 blr |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
140 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
141 _nonleaf_call: |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
142 38: 7c 08 02 a6 mflr 0 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
143 3c: bf c1 ff f8 stmw 30, -8(1) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
144 40: 90 01 00 08 stw 0, 8(1) ; | prolog |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
145 44: 94 21 ff a0 stwu 1, -96(1) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
146 48: 7c 3e 0b 78 mr 30, 1 ; / |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
147 4c: 90 7e 00 78 stw 3, 120(30) ; \ |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
148 50: 90 9e 00 7c stw 4, 124(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
149 54: 90 be 00 80 stw 5, 128(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
150 58: 90 de 00 84 stw 6, 132(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
151 5c: 90 fe 00 88 stw 7, 136(30) ; | in args 0,1,2,3,4,5,6,7 -> spill area in prev frame |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
152 60: 91 1e 00 8c stw 8, 140(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
153 64: 91 3e 00 90 stw 9, 144(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
154 68: 91 5e 00 94 stw 10, 148(30) ; | |
331 | 155 6c: 80 01 00 00 lwz 0, 0(1) ; fetch back-chain ptr (parent frame's sp) from stack of top by prolog -> gpr0, and ... |
327
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
156 70: 94 01 ff 10 stwu 0, -240(1) ; ... update it further up the stack for alloca(220) - with padding to guarantee alignment |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
157 74: 38 41 00 50 addi 2, 1, 80 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
158 78: 38 02 00 0f addi 0, 2, 15 ; | start of alloca()'d memory -> gpr2, by ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
159 7c: 54 00 e1 3e srwi 0, 0, 4 ; | ... using gpr0 as helper to align to 16b, leaving at least 64b at top of stack |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
160 80: 54 02 20 36 slwi 2, 0, 4 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
161 84: 38 00 00 4c li 0, 76 ; 'L' -> gpr0, and ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
162 88: 98 02 00 00 stb 0, 0(2) ; ... store in local area (of alloca()'d space) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
163 8c: 80 1e 00 9c lwz 0, 156(30) ; arg 7 (fetched from stack param area from prev frame), and ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
164 90: 90 01 00 38 stw 0, 56(1) ; ... "pushed" onto stack |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
165 94: 80 7e 00 7c lwz 3, 124(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
166 98: 80 9e 00 80 lwz 4, 128(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
167 9c: 80 be 00 84 lwz 5, 132(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
168 a0: 80 de 00 88 lwz 6, 136(30) ; | arg 0,1,2,3,4,5,6 (fetched from spill area from prev frame) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
169 a4: 80 fe 00 8c lwz 7, 140(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
170 a8: 81 1e 00 90 lwz 8, 144(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
171 ac: 81 3e 00 94 lwz 9, 148(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
172 b0: 81 5e 00 98 lwz 10, 152(30) ; arg 7 (fetched from stack param area from prev frame) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
173 b4: 4b ff ff 4d bl .+67108684 ; call and put return address -> lr |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
174 b8: 80 21 00 00 lwz 1, 0(1) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
175 bc: 80 01 00 08 lwz 0, 8(1) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
176 c0: 7c 08 03 a6 mtlr 0 ; | epilog |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
177 c4: bb c1 ff f8 lmw 30, -8(1) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
178 c8: 4e 80 00 20 blr ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
179 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
180 _main: |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
181 cc: 7c 08 02 a6 mflr 0 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
182 d0: bf c1 ff f8 stmw 30, -8(1) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
183 d4: 90 01 00 08 stw 0, 8(1) ; | prolog |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
184 d8: 94 21 ff a0 stwu 1, -96(1) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
185 dc: 7c 3e 0b 78 mr 30, 1 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
186 e0: 38 00 00 08 li 0, 8 ; arg 8, ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
187 e4: 90 01 00 38 stw 0, 56(1) ; ... "pushed" onto stack |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
188 e8: 38 00 00 09 li 0, 9 ; arg 9, ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
189 ec: 90 01 00 3c stw 0, 60(1) ; ... "pushed" onto stack |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
190 f0: 38 60 00 00 li 3, 0 ; arg 0 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
191 f4: 38 80 00 01 li 4, 1 ; arg 1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
192 f8: 38 a0 00 02 li 5, 2 ; arg 2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
193 fc: 38 c0 00 03 li 6, 3 ; arg 3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
194 100: 38 e0 00 04 li 7, 4 ; arg 4 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
195 104: 39 00 00 05 li 8, 5 ; arg 5 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
196 108: 39 20 00 06 li 9, 6 ; arg 6 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
197 10c: 39 40 00 07 li 10, 7 ; arg 7 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
198 110: 4b ff ff 29 bl .+67108648 ; call and put return address -> lr |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
199 114: 38 00 00 00 li 0, 0 ; return value (pointlessly) via gpr0 ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
200 118: 7c 03 03 78 mr 3, 0 ; ... to gpr3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
201 11c: 80 21 00 00 lwz 1, 0(1) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
202 120: 80 01 00 08 lwz 0, 8(1) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
203 124: 7c 08 03 a6 mtlr 0 ; | epilog |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
204 128: bb c1 ff f8 lmw 30, -8(1) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
205 12c: 4e 80 00 20 blr ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
206 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
207 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
208 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
209 ; ------------- var args with ints and floats to see spilling (which remains only int regs), b/c doubles are passed via them and floats are promoted to doubles in (...) -----------> |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
210 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
211 ; #include <stdlib.h> |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
212 ; #include <stdarg.h> |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
213 ; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
214 ; void leaf_call(int b, int c, int d, int e, float f, float g, int h, int i, float j) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
215 ; { |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
216 ; } |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
217 ; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
218 ; void nonleaf_call(int a, ...) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
219 ; { |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
220 ; int b, c, d, e, h, i; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
221 ; float f, g, j; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
222 ; va_list ap; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
223 ; va_start(ap, a); |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
224 ; b = va_arg(ap, int); |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
225 ; c = va_arg(ap, int); |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
226 ; d = va_arg(ap, int); |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
227 ; e = va_arg(ap, int); |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
228 ; f = (float)va_arg(ap, double); |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
229 ; g = (float)va_arg(ap, double); |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
230 ; h = va_arg(ap, int); |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
231 ; i = va_arg(ap, int); |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
232 ; j = (float)va_arg(ap, double); |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
233 ; /* use some local data */ |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
234 ; *(char*)alloca(220) = 'L'; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
235 ; leaf_call(b, c, d, e, f, g, h, i, j); |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
236 ; } |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
237 ; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
238 ; int main() |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
239 ; { |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
240 ; nonleaf_call(0, 1, 2, 3, 4, 5.f, 6.f, 7, 8, 9.f); |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
241 ; return 0; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
242 ; } |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
243 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
244 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
245 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
246 ; output from darwin-8.0.1-ppc w/ gcc 3.3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
247 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
248 _leaf_call: |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
249 0: bf c1 ff f8 stmw 30, -8(1) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
250 4: 94 21 ff d0 stwu 1, -48(1) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
251 8: 7c 3e 0b 78 mr 30, 1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
252 c: 90 7e 00 48 stw 3, 72(30) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
253 10: 90 9e 00 4c stw 4, 76(30) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
254 14: 90 be 00 50 stw 5, 80(30) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
255 18: 90 de 00 54 stw 6, 84(30) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
256 1c: d0 3e 00 58 stfs 1, 88(30) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
257 20: d0 5e 00 5c stfs 2, 92(30) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
258 24: 91 3e 00 60 stw 9, 96(30) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
259 28: 91 5e 00 64 stw 10, 100(30) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
260 2c: d0 7e 00 68 stfs 3, 104(30) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
261 30: 80 21 00 00 lwz 1, 0(1) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
262 34: bb c1 ff f8 lmw 30, -8(1) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
263 38: 4e 80 00 20 blr |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
264 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
265 _nonleaf_call: |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
266 3c: 7c 08 02 a6 mflr 0 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
267 40: bf c1 ff f8 stmw 30, -8(1) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
268 44: 90 01 00 08 stw 0, 8(1) ; | prolog |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
269 48: 94 21 ff 70 stwu 1, -144(1) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
270 4c: 7c 3e 0b 78 mr 30, 1 ; / |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
271 50: 90 9e 00 ac stw 4, 172(30) ; \ |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
272 54: 90 be 00 b0 stw 5, 176(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
273 58: 90 de 00 b4 stw 6, 180(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
274 5c: 90 fe 00 b8 stw 7, 184(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
275 60: 91 1e 00 bc stw 8, 188(30) ; | in args ,1,2,3,4,5,6,7 -> spill area in prev frame |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
276 64: 91 3e 00 c0 stw 9, 192(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
277 68: 91 5e 00 c4 stw 10, 196(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
278 6c: 90 7e 00 a8 stw 3, 168(30) ; | <- this is in arg 0, the only named arg |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
279 70: 38 1e 00 ac addi 0, 30, 172 ; get pointer to first unnamed arg in gpr0 for vararg iteration, ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
280 74: 90 1e 00 74 stw 0, 116(30) ; ... and store read ptr in local area |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
281 78: 81 3e 00 74 lwz 9, 116(30) ; \ read ptr -> gpr0 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
282 7c: 80 5e 00 74 lwz 2, 116(30) ; | use gpr2 as helper ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
283 80: 38 02 00 04 addi 0, 2, 4 ; | ... to increment read ptr ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
284 84: 90 1e 00 74 stw 0, 116(30) ; | in arg 1 ... and restore |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
285 88: 80 09 00 00 lwz 0, 0(9) ; | load in arg 1, and ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
286 8c: 90 1e 00 50 stw 0, 80(30) ; / ... store in temp space in local area |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
287 90: 81 3e 00 74 lwz 9, 116(30) ; \ |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
288 94: 80 5e 00 74 lwz 2, 116(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
289 98: 38 02 00 04 addi 0, 2, 4 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
290 9c: 90 1e 00 74 stw 0, 116(30) ; | in arg 2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
291 a0: 80 09 00 00 lwz 0, 0(9) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
292 a4: 90 1e 00 54 stw 0, 84(30) ; / |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
293 a8: 81 3e 00 74 lwz 9, 116(30) ; \ |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
294 ac: 80 5e 00 74 lwz 2, 116(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
295 b0: 38 02 00 04 addi 0, 2, 4 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
296 b4: 90 1e 00 74 stw 0, 116(30) ; | in arg 3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
297 b8: 80 09 00 00 lwz 0, 0(9) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
298 bc: 90 1e 00 58 stw 0, 88(30) ; / |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
299 c0: 81 3e 00 74 lwz 9, 116(30) ; \ |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
300 c4: 80 5e 00 74 lwz 2, 116(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
301 c8: 38 02 00 04 addi 0, 2, 4 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
302 cc: 90 1e 00 74 stw 0, 116(30) ; | in arg 4 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
303 d0: 80 09 00 00 lwz 0, 0(9) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
304 d4: 90 1e 00 5c stw 0, 92(30) ; / |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
305 d8: 81 3e 00 74 lwz 9, 116(30) ; \ |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
306 dc: 80 5e 00 74 lwz 2, 116(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
307 e0: 38 02 00 08 addi 0, 2, 8 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
308 e4: 90 1e 00 74 stw 0, 116(30) ; | in arg 5 (float, promoted to double) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
309 e8: c8 09 00 00 lfd 0, 0(9) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
310 ec: fc 00 00 18 frsp 0, 0 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
311 f0: d0 1e 00 68 stfs 0, 104(30) ; / |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
312 f4: 81 3e 00 74 lwz 9, 116(30) ; \ |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
313 f8: 80 5e 00 74 lwz 2, 116(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
314 fc: 38 02 00 08 addi 0, 2, 8 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
315 100: 90 1e 00 74 stw 0, 116(30) ; | in arg 6 (float, promoted to double) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
316 104: c8 09 00 00 lfd 0, 0(9) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
317 108: fc 00 00 18 frsp 0, 0 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
318 10c: d0 1e 00 6c stfs 0, 108(30) ; / |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
319 110: 81 3e 00 74 lwz 9, 116(30) ; \ |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
320 114: 80 5e 00 74 lwz 2, 116(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
321 118: 38 02 00 04 addi 0, 2, 4 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
322 11c: 90 1e 00 74 stw 0, 116(30) ; | in arg 7 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
323 120: 80 09 00 00 lwz 0, 0(9) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
324 124: 90 1e 00 60 stw 0, 96(30) ; / |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
325 128: 81 3e 00 74 lwz 9, 116(30) ; \ |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
326 12c: 80 5e 00 74 lwz 2, 116(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
327 130: 38 02 00 04 addi 0, 2, 4 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
328 134: 90 1e 00 74 stw 0, 116(30) ; | in arg 8 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
329 138: 80 09 00 00 lwz 0, 0(9) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
330 13c: 90 1e 00 64 stw 0, 100(30) ; / |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
331 140: 81 3e 00 74 lwz 9, 116(30) ; \ |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
332 144: 80 5e 00 74 lwz 2, 116(30) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
333 148: 38 02 00 08 addi 0, 2, 8 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
334 14c: 90 1e 00 74 stw 0, 116(30) ; | in arg 9 (float, promoted to double) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
335 150: c8 09 00 00 lfd 0, 0(9) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
336 154: fc 00 00 18 frsp 0, 0 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
337 158: d0 1e 00 70 stfs 0, 112(30) ; / |
331 | 338 15c: 80 01 00 00 lwz 0, 0(1) ; fetch back-chain ptr (parent frame's sp) from stack of top by prolog -> gpr0, and ... |
327
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
339 160: 94 01 ff 10 stwu 0, -240(1) ; ... update it further up the stack for alloca |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
340 164: 38 41 00 50 addi 2, 1, 80 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
341 168: 38 02 00 0f addi 0, 2, 15 ; | start of alloca()'d memory -> gpr2, by ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
342 16c: 54 00 e1 3e srwi 0, 0, 4 ; | ... using gpr0 as helper to align to 16b, l |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
343 170: 54 02 20 36 slwi 2, 0, 4 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
344 174: 38 00 00 4c li 0, 76 ; 'L' -> gpr0, and ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
345 178: 98 02 00 00 stb 0, 0(2) ; ... store in local area (of alloca()'d space) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
346 17c: 80 7e 00 50 lwz 3, 80(30) ; arg 0 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
347 180: 80 9e 00 54 lwz 4, 84(30) ; arg 1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
348 184: 80 be 00 58 lwz 5, 88(30) ; arg 2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
349 188: 80 de 00 5c lwz 6, 92(30) ; arg 3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
350 18c: c0 3e 00 68 lfs 1, 104(30) ; arg 4 (float) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
351 190: c0 5e 00 6c lfs 2, 108(30) ; arg 5 (float) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
352 194: 81 3e 00 60 lwz 9, 96(30) ; arg 6 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
353 198: 81 5e 00 64 lwz 10, 100(30) ; arg 7 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
354 19c: c0 7e 00 70 lfs 3, 112(30) ; arg 8 (float) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
355 1a0: 4b ff fe 61 bl .+67108448 ; call and put return address -> lr |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
356 1a4: 80 21 00 00 lwz 1, 0(1) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
357 1a8: 80 01 00 08 lwz 0, 8(1) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
358 1ac: 7c 08 03 a6 mtlr 0 ; | epilog |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
359 1b0: bb c1 ff f8 lmw 30, -8(1) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
360 1b4: 4e 80 00 20 blr ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
361 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
362 _main: |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
363 1b8: 7c 08 02 a6 mflr 0 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
364 1bc: bf c1 ff f8 stmw 30, -8(1) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
365 1c0: 90 01 00 08 stw 0, 8(1) ; | prolog |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
366 1c4: 94 21 ff 90 stwu 1, -112(1) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
367 1c8: 7c 3e 0b 78 mr 30, 1 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
368 1cc: 42 9f 00 05 bcl 20, 31, .+4 ; ppc way to get PC in ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
369 1d0: 7f e8 02 a6 mflr 31 ; ... gpr31 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
370 1d4: 38 00 00 07 li 0, 7 ; arg 7, ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
371 1d8: 90 01 00 3c stw 0, 60(1) ; ... "pushed" onto stack |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
372 1dc: 38 00 00 08 li 0, 8 ; arg 8, ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
373 1e0: 90 01 00 40 stw 0, 64(1) ; ... "pushed" onto stack |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
374 1e4: 3c 40 40 22 lis 2, 16418 ; | arg 9, top-half (double b/c of vararg), and ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
375 1e8: 38 60 00 00 li 3, 0 ; | ... bottom-half ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
376 1ec: 90 41 00 44 stw 2, 68(1) ; | ... "pushed" into stack |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
377 1f0: 90 61 00 48 stw 3, 72(1) ; | " |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
378 1f4: 38 00 00 00 li 0, 0 ; arg 6, bottom-half, ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
379 1f8: 90 01 00 38 stw 0, 56(1) ; ... "pushed" onto stack (first word in param area, top-half passed via gpr10, see below) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
380 1fc: 38 60 00 00 li 3, 0 ; arg 0 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
381 200: 38 80 00 01 li 4, 1 ; arg 1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
382 204: 38 a0 00 02 li 5, 2 ; arg 2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
383 208: 38 c0 00 03 li 6, 3 ; arg 3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
384 20c: 38 e0 00 04 li 7, 4 ; arg 4 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
385 210: 3d 20 40 14 lis 9, 16404 ; | prep arg 5 (double b/c of vararg) for move to arg reg later: top-half -> gpr9 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
386 214: 39 40 00 00 li 10, 0 ; | bottom-half -> gpr10 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
387 218: 3c 5f 00 00 addis 2, 31, 0 ; PC -> gpr2, to ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
388 21c: c8 02 00 98 lfd 0, 152(2) ; ... load some static data (arg 5, the float) stored right after this function -> gpr0 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
389 220: 7d 28 4b 78 mr 8, 9 ; arg 5, top-half |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
390 224: 7d 49 53 78 mr 9, 10 ; arg 5, bottom-half |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
391 228: fc 20 00 90 fmr 1, 0 ; arg 5 in 1st fp reg |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
392 22c: 3d 60 40 18 lis 11, 16408 ; | prep arg 6 (double b/c of vararg) for move to arg reg later: top-half -> gpr11 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
393 230: 39 80 00 00 li 12, 0 ; | bottom-half -> gpr12 (this one is pointless, unused, bottom-half already placed on stack) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
394 234: 3c 5f 00 00 addis 2, 31, 0 ; PC -> gpr2, to ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
395 238: c8 02 00 a0 lfd 0, 160(2) ; ... load some static data (arg 6, the 2nd float) stored right after this function -> gpr0 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
396 23c: 7d 6a 5b 78 mr 10, 11 ; arg 6, top-half |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
397 240: fc 40 00 90 fmr 2, 0 ; arg 5 in 2nd fp reg |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
398 244: c8 01 00 44 lfd 0, 68(1) ; arg 9, ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
399 248: fc 60 00 90 fmr 3, 0 ; ... -> 3rd fp reg |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
400 24c: 4b ff fd f1 bl .+67108336 ; call and put return address -> lr |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
401 250: 7c 03 03 78 mr 3, 0 ; return value @@@unsure why gpr0 is guaranteed to be 0 here |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
402 254: 80 21 00 00 lwz 1, 0(1) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
403 258: 80 01 00 08 lwz 0, 8(1) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
404 25c: 7c 08 03 a6 mtlr 0 ; | epilog |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
405 260: bb c1 ff f8 lmw 30, -8(1) ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
406 264: 4e 80 00 20 blr ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
407 |
473
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
408 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
409 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
410 ; ---------- structs by value ----------> |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
411 ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
412 ; struct A { int i, j; long long l; }; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
413 ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
414 ; void leaf_call(int b, int c, int d, int e, struct A f, int g, int h) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
415 ; { |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
416 ; } |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
417 ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
418 ; void nonleaf_call(int a, int b, int c, int d, int e, struct A f, int g, int h) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
419 ; { |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
420 ; /* use some local data */ |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
421 ; char l[100] = { 'L' }; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
422 ; leaf_call(b, c, d, e, f, g, h); |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
423 ; } |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
424 ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
425 ; int main() |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
426 ; { |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
427 ; nonleaf_call(0, 1, 2, 3, 4, (struct A){5, 6, 7ll}, 8, 9); |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
428 ; return 0; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
429 ; } |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
430 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
431 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
432 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
433 ; output from darwin-8.0.1-ppc w/ gcc 3.3 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
434 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
435 _leaf_call: |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
436 00000000 stmw r30,0xfff8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
437 00000004 stwu r1,0xffd0(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
438 00000008 or r30,r1,r1 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
439 0000000c stw r3,0x48(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
440 00000010 stw r4,0x4c(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
441 00000014 stw r5,0x50(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
442 00000018 stw r6,0x54(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
443 0000001c stw r7,0x58(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
444 00000020 stw r8,0x5c(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
445 00000024 stw r9,0x60(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
446 00000028 stw r10,0x64(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
447 0000002c lwz r1,0x0(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
448 00000030 lmw r30,0xfff8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
449 00000034 blr |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
450 _nonleaf_call: |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
451 00000038 mfspr r0,lr |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
452 0000003c stmw r30,0xfff8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
453 00000040 stw r0,0x8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
454 00000044 stwu r1,0xff30(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
455 00000048 or r30,r1,r1 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
456 0000004c bcl 20,31,0x50 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
457 00000050 mfspr r31,lr |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
458 00000054 stw r3,0xe8(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
459 00000058 stw r4,0xec(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
460 0000005c stw r5,0xf0(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
461 00000060 stw r6,0xf4(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
462 00000064 stw r7,0xf8(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
463 00000068 stw r8,0xfc(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
464 0000006c stw r9,0x100(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
465 00000070 stw r10,0x104(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
466 00000074 addis r2,r31,0x0 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
467 00000078 addi r2,r2,0x148 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
468 0000007c addi r0,r30,0x50 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
469 00000080 li r9,0x64 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
470 00000084 or r3,r0,r0 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
471 00000088 or r4,r2,r2 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
472 0000008c or r5,r9,r9 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
473 00000090 bl 0x178 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
474 00000094 lwz r0,0x10c(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
475 00000098 stw r0,0x38(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
476 0000009c lwz r0,0x110(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
477 000000a0 stw r0,0x3c(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
478 000000a4 lwz r3,0xec(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
479 000000a8 lwz r4,0xf0(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
480 000000ac lwz r5,0xf4(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
481 000000b0 lwz r6,0xf8(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
482 000000b4 lwz r7,0xfc(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
483 000000b8 lwz r8,0x100(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
484 000000bc lwz r9,0x104(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
485 000000c0 lwz r10,0x108(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
486 000000c4 bl 0x0 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
487 000000c8 lwz r1,0x0(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
488 000000cc lwz r0,0x8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
489 000000d0 mtspr lr,r0 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
490 000000d4 lmw r30,0xfff8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
491 000000d8 blr |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
492 _main: |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
493 000000dc mfspr r0,lr ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
494 000000e0 stmw r30,0xfff8(r1) ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
495 000000e4 stw r0,0x8(r1) ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
496 000000e8 stwu r1,0xff90(r1) ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
497 000000ec or r30,r1,r1 ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
498 000000f0 bcl 20,31,0xf4 ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
499 000000f4 mfspr r31,lr ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
500 000000f8 addis r2,r31,0x0 ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
501 000000fc addi r2,r2,0x108 ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
502 00000100 lwz r0,0x0(r2) ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
503 00000104 lwz r9,0x4(r2) ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
504 00000108 lwz r11,0x8(r2) ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
505 0000010c lwz r2,0xc(r2) ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
506 00000110 stw r0,0x50(r30) ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
507 00000114 stw r9,0x54(r30) ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
508 00000118 stw r11,0x58(r30) ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
509 0000011c stw r2,0x5c(r30) ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
510 00000120 li r0,0x8 ; arg 6, ... |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
511 00000124 stw r0,0x3c(r1) ; ... "pushed" onto stack |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
512 00000128 li r0,0x9 ; arg 7, ... |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
513 0000012c stw r0,0x40(r1) ; ... "pushed" onto stack |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
514 00000130 lwz r0,0x5c(r30) ; | | last word of struct "pushed" onto stack |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
515 00000134 stw r0,0x38(r1) ; | / |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
516 00000138 lwz r8,0x50(r30) ; | arg 5 (struct, passed as 4 words) \ |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
517 0000013c lwz r9,0x54(r30) ; | | first 3 words of struct passed in remaining regs |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
518 00000140 lwz r10,0x58(r30) ; | | |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
519 00000144 li r3,0x0 ; arg 0 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
520 00000148 li r4,0x1 ; arg 1 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
521 0000014c li r5,0x2 ; arg 2 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
522 00000150 li r6,0x3 ; arg 3 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
523 00000154 li r7,0x4 ; arg 4 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
524 00000158 bl 0x38 ; call and put return address -> lr |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
525 0000015c li r0,0x0 ; return value (pointlessly) via gpr0 ... |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
526 00000160 or r3,r0,r0 ; ... to gpr3 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
527 00000164 lwz r1,0x0(r1) ; | |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
528 00000168 lwz r0,0x8(r1) ; | |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
529 0000016c mtspr lr,r0 ; | epilog |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
530 00000170 lmw r30,0xfff8(r1) ; | |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
531 00000174 blr ; | |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
532 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
533 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
534 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
535 ; ---------- single-field structs by value (of different sizes) ----------> |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
536 ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
537 ; struct C { char c; }; // <= 2 bytes, but normal alignment as passed like a char |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
538 ; struct S { short s; }; // <= 2 bytes, but normal alignment as passed like a short |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
539 ; struct I { int i; }; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
540 ; struct F { float f; }; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
541 ; struct D { double d; }; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
542 ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
543 ; struct C2 { char c[2]; }; // <= 2 bytes, special alignment |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
544 ; struct C3 { char c[3]; }; // > 2 bytes, normal alignment |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
545 ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
546 ; void leaf_call(struct C2 a, struct C b, struct S c, struct I d, struct F e, struct D f, struct C3 g) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
547 ; { |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
548 ; } |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
549 ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
550 ; int main() |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
551 ; { |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
552 ; leaf_call((struct C2){{0,1}}, (struct C){2}, (struct S){3}, (struct I){4}, (struct F){5.f}, (struct D){6.}, (struct C3){{7,8,9}}); |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
553 ; return 0; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
554 ; } |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
555 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
556 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
557 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
558 ; output from darwin-8.0.1-ppc w/ gcc 3.3 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
559 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
560 _leaf_call: |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
561 00000000 stmw r30,0xfff8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
562 00000004 stwu r1,0xffc0(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
563 00000008 or r30,r1,r1 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
564 0000000c sth r3,0x58(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
565 00000010 stb r4,0x5c(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
566 00000014 sth r5,0x60(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
567 00000018 stw r6,0x64(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
568 0000001c stfs f1,0x68(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
569 00000020 stfd f2,0x20(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
570 00000024 lwz r1,0x0(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
571 00000028 lmw r30,0xfff8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
572 0000002c blr |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
573 _main: |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
574 00000030 mfspr r0,lr ; | |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
575 00000034 stmw r30,0xfff8(r1) ; | |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
576 00000038 stw r0,0x8(r1) ; | prolog |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
577 0000003c stwu r1,0xff80(r1) ; | |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
578 00000040 or r30,r1,r1 ; | |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
579 00000044 bcl 20,31,0x48 ; ppc way to get PC in ... |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
580 00000048 mfspr r31,lr ; ... gpr31 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
581 0000004c li r0,0x0 ; | \ |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
582 00000050 stb r0,0x40(r30) ; | | |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
583 00000054 li r0,0x1 ; | | C2 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
584 00000058 stb r0,0x41(r30) ; | / |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
585 0000005c li r0,0x2 ; | local area struct init \ C |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
586 00000060 stb r0,0x42(r30) ; | / |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
587 00000064 li r0,0x3 ; | \ S |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
588 00000068 sth r0,0x44(r30) ; | / |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
589 0000006c li r0,0x4 ; | \ I |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
590 00000070 stw r0,0x48(r30) ; | / |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
591 00000074 lis r0,0x40a0 ; | \ F |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
592 00000078 stw r0,0x4c(r30) ; | / |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
593 0000007c addis r2,r31,0x0 ; | \ |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
594 00000080 addi r2,r2,0xa8 ; | | D |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
595 00000084 lfd f0,0x0(r2) ; | | |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
596 00000088 stfd f0,0x50(r30) ; | / |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
597 0000008c addis r2,r31,0x0 ; | \ |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
598 00000090 addi r2,r2,0xb0 ; | | |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
599 00000094 lhz r0,0x0(r2) ; | | C3 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
600 00000098 lbz r2,0x2(r2) ; | | |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
601 0000009c sth r0,0x60(r30) ; | | |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
602 000000a0 stb r2,0x62(r30) ; / / |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
603 000000a4 lhz r0,0x60(r30) ; \ |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
604 000000a8 lbz r2,0x62(r30) ; | |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
605 000000ac sth r0,0x34(r1) ; | prep arg 6 (struct C3), zero-extended, right justified -> local area on stack |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
606 000000b0 stb r2,0x36(r1) ; / |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
607 000000b4 lhz r3,0x40(r30) ; arg 0 (struct C2) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
608 000000b8 lbz r4,0x42(r30) ; arg 1 (struct C) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
609 000000bc lhz r5,0x44(r30) ; arg 2 (struct S) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
610 000000c0 lwz r6,0x48(r30) ; arg 3 (struct I) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
611 000000c4 lfs f1,0x4c(r30) ; arg 4 (struct F, int arg reg r7 then skipped) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
612 000000c8 lfd f2,0x50(r30) ; arg 5 (struct D, int arg regs r8 and r9 then skipped) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
613 000000cc lwz r10,0x34(r1) ; arg 6 (struct C3, fetched from local area) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
614 000000d0 bl 0x0 ; call and put return address -> lr |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
615 000000d4 li r0,0x0 ; return value (pointlessly) via gpr0 ... |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
616 000000d8 or r3,r0,r0 ; ... to gpr3 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
617 000000dc lwz r1,0x0(r1) ; | |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
618 000000e0 lwz r0,0x8(r1) ; | |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
619 000000e4 mtspr lr,r0 ; | epilog |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
620 000000e8 lmw r30,0xfff8(r1) ; | |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
621 000000ec blr ; | |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
622 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
623 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
624 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
625 ; ---------- structs by value, complex example (multiple structs) ----------> |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
626 ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
627 ; struct A { int i, j; float f; }; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
628 ; struct B { double d; long long l; }; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
629 ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
630 ; void leaf_call(int b, struct A c, struct B d, int e, int f, struct A g, struct B h, int i, int j) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
631 ; { |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
632 ; } |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
633 ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
634 ; void nonleaf_call(int a, int b, struct A c, struct B d, int e, int f, struct A g, struct B h, int i, int j) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
635 ; { |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
636 ; /* use some local data */ |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
637 ; char l[100] = { 'L' }; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
638 ; leaf_call(b, c, d, e, f, g, h, i, j); |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
639 ; } |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
640 ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
641 ; int main() |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
642 ; { |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
643 ; nonleaf_call(0, 1, (struct A){2, 3, 4.f}, (struct B){5., 6ll}, 7, 8, (struct A){9, 10, 11.f}, (struct B){12., 13ll}, 14, 15); |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
644 ; return 0; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
645 ; } |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
646 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
647 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
648 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
649 ; output from darwin-8.0.1-ppc w/ gcc 3.3 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
650 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
651 _leaf_call: |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
652 00000000 stmw r30,0xfff8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
653 00000004 stwu r1,0xffd0(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
654 00000008 or r30,r1,r1 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
655 0000000c stw r3,0x48(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
656 00000010 stw r4,0x4c(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
657 00000014 stw r5,0x50(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
658 00000018 stw r6,0x54(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
659 0000001c stw r7,0x58(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
660 00000020 stw r8,0x5c(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
661 00000024 stw r9,0x60(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
662 00000028 stw r10,0x64(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
663 0000002c lwz r1,0x0(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
664 00000030 lmw r30,0xfff8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
665 00000034 blr |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
666 _nonleaf_call: |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
667 00000038 mfspr r0,lr |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
668 0000003c stmw r30,0xfff8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
669 00000040 stw r0,0x8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
670 00000044 stwu r1,0xff10(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
671 00000048 or r30,r1,r1 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
672 0000004c bcl 20,31,0x50 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
673 00000050 mfspr r31,lr |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
674 00000054 stw r3,0x108(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
675 00000058 stw r4,0x10c(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
676 0000005c stw r5,0x110(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
677 00000060 stw r6,0x114(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
678 00000064 stw r7,0x118(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
679 00000068 stw r8,0x11c(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
680 0000006c stw r9,0x120(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
681 00000070 stw r10,0x124(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
682 00000074 addis r2,r31,0x0 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
683 00000078 addi r2,r2,0x240 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
684 0000007c addi r0,r30,0x70 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
685 00000080 li r9,0x64 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
686 00000084 or r3,r0,r0 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
687 00000088 or r4,r2,r2 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
688 0000008c or r5,r9,r9 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
689 00000090 bl 0x270 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
690 00000094 lwz r0,0x12c(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
691 00000098 stw r0,0x38(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
692 0000009c lwz r0,0x130(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
693 000000a0 stw r0,0x3c(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
694 000000a4 lwz r0,0x134(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
695 000000a8 lwz r2,0x138(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
696 000000ac lwz r9,0x13c(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
697 000000b0 stw r0,0x40(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
698 000000b4 stw r2,0x44(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
699 000000b8 stw r9,0x48(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
700 000000bc lwz r0,0x140(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
701 000000c0 lwz r2,0x144(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
702 000000c4 lwz r9,0x148(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
703 000000c8 lwz r11,0x14c(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
704 000000cc stw r0,0x4c(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
705 000000d0 stw r2,0x50(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
706 000000d4 stw r9,0x54(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
707 000000d8 stw r11,0x58(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
708 000000dc lwz r0,0x150(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
709 000000e0 stw r0,0x5c(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
710 000000e4 lwz r0,0x154(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
711 000000e8 stw r0,0x60(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
712 000000ec lwz r3,0x10c(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
713 000000f0 lwz r4,0x110(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
714 000000f4 lwz r5,0x114(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
715 000000f8 lwz r6,0x118(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
716 000000fc lwz r7,0x11c(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
717 00000100 lwz r8,0x120(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
718 00000104 lwz r9,0x124(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
719 00000108 lwz r10,0x128(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
720 0000010c bl 0x0 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
721 00000110 lwz r1,0x0(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
722 00000114 lwz r0,0x8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
723 00000118 mtspr lr,r0 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
724 0000011c lmw r30,0xfff8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
725 00000120 blr |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
726 _main: |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
727 00000124 mfspr r0,lr |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
728 00000128 stmw r30,0xfff8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
729 0000012c stw r0,0x8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
730 00000130 stwu r1,0xff40(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
731 00000134 or r30,r1,r1 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
732 00000138 bcl 20,31,0x13c |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
733 0000013c mfspr r31,lr |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
734 00000140 addis r2,r31,0x0 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
735 00000144 addi r2,r2,0x1b8 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
736 00000148 lwz r0,0x0(r2) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
737 0000014c lwz r9,0x4(r2) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
738 00000150 lwz r2,0x8(r2) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
739 00000154 stw r0,0x70(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
740 00000158 stw r9,0x74(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
741 0000015c stw r2,0x78(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
742 00000160 addis r2,r31,0x0 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
743 00000164 addi r2,r2,0x1c4 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
744 00000168 lwz r0,0x0(r2) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
745 0000016c lwz r9,0x4(r2) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
746 00000170 lwz r11,0x8(r2) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
747 00000174 lwz r2,0xc(r2) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
748 00000178 stw r0,0x80(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
749 0000017c stw r9,0x84(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
750 00000180 stw r11,0x88(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
751 00000184 stw r2,0x8c(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
752 00000188 addis r2,r31,0x0 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
753 0000018c addi r2,r2,0x1d4 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
754 00000190 lwz r0,0x0(r2) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
755 00000194 lwz r9,0x4(r2) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
756 00000198 lwz r2,0x8(r2) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
757 0000019c stw r0,0x90(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
758 000001a0 stw r9,0x94(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
759 000001a4 stw r2,0x98(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
760 000001a8 addis r2,r31,0x0 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
761 000001ac addi r2,r2,0x1e4 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
762 000001b0 lwz r0,0x0(r2) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
763 000001b4 lwz r9,0x4(r2) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
764 000001b8 lwz r11,0x8(r2) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
765 000001bc lwz r2,0xc(r2) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
766 000001c0 stw r0,0xa0(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
767 000001c4 stw r9,0xa4(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
768 000001c8 stw r11,0xa8(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
769 000001cc stw r2,0xac(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
770 000001d0 li r0,0x7 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
771 000001d4 stw r0,0x3c(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
772 000001d8 li r0,0x8 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
773 000001dc stw r0,0x40(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
774 000001e0 lwz r0,0x90(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
775 000001e4 lwz r2,0x94(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
776 000001e8 lwz r9,0x98(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
777 000001ec stw r0,0x44(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
778 000001f0 stw r2,0x48(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
779 000001f4 stw r9,0x4c(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
780 000001f8 lwz r0,0xa0(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
781 000001fc lwz r2,0xa4(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
782 00000200 lwz r9,0xa8(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
783 00000204 lwz r11,0xac(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
784 00000208 stw r0,0x50(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
785 0000020c stw r2,0x54(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
786 00000210 stw r9,0x58(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
787 00000214 stw r11,0x5c(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
788 00000218 li r0,0xe |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
789 0000021c stw r0,0x60(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
790 00000220 li r0,0xf |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
791 00000224 stw r0,0x64(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
792 00000228 lwz r0,0x8c(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
793 0000022c stw r0,0x38(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
794 00000230 lwz r8,0x80(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
795 00000234 lwz r9,0x84(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
796 00000238 lwz r10,0x88(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
797 0000023c li r3,0x0 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
798 00000240 li r4,0x1 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
799 00000244 lwz r5,0x70(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
800 00000248 lwz r6,0x74(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
801 0000024c lwz r7,0x78(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
802 00000250 bl 0x38 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
803 00000254 li r0,0x0 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
804 00000258 or r3,r0,r0 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
805 0000025c lwz r1,0x0(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
806 00000260 lwz r0,0x8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
807 00000264 mtspr lr,r0 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
808 00000268 lmw r30,0xfff8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
809 0000026c blr |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
810 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
811 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
812 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
813 ; ---------- returning qwords ----------> |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
814 ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
815 ; long long f() |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
816 ; { |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
817 ; return 7171LL; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
818 ; } |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
819 ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
820 ; int main() |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
821 ; { |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
822 ; return (int)f(); |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
823 ; } |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
824 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
825 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
826 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
827 ; output from darwin-8.0.1-ppc w/ gcc 3.3 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
828 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
829 _f: |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
830 00000000 stmw r30,0xfff8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
831 00000004 stwu r1,0xffd0(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
832 00000008 or r30,r1,r1 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
833 0000000c li r2,0x0 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
834 00000010 li r3,0x1c03 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
835 00000014 or r4,r3,r3 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
836 00000018 or r3,r2,r2 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
837 0000001c lwz r1,0x0(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
838 00000020 lmw r30,0xfff8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
839 00000024 blr |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
840 _main: |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
841 00000028 mfspr r0,lr |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
842 0000002c stmw r30,0xfff8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
843 00000030 stw r0,0x8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
844 00000034 stwu r1,0xffb0(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
845 00000038 or r30,r1,r1 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
846 0000003c bl 0x0 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
847 00000040 or r2,r3,r3 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
848 00000044 or r3,r4,r4 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
849 00000048 or r0,r3,r3 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
850 0000004c or r3,r0,r0 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
851 00000050 lwz r1,0x0(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
852 00000054 lwz r0,0x8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
853 00000058 mtspr lr,r0 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
854 0000005c lmw r30,0xfff8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
855 00000060 blr |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
856 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
857 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
858 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
859 ; ---------- returning structs by value ----------> |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
860 ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
861 ; struct Small { char x; }; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
862 ; struct Big { long long i; long j; }; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
863 ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
864 ; struct Small f0() |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
865 ; { |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
866 ; struct Small s = { 132 }; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
867 ; return s; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
868 ; } |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
869 ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
870 ; struct Big f1() |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
871 ; { |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
872 ; struct Big b = { 7171LL, 232 }; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
873 ; return b; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
874 ; } |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
875 ; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
876 ; int main() |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
877 ; { |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
878 ; struct Small s = f0(); |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
879 ; struct Big b = f1(); |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
880 ; return b.j + s.x; |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
881 ; } |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
882 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
883 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
884 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
885 ; output from darwin-8.0.1-ppc w/ gcc 3.3 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
886 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
887 _f0: |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
888 00000000 stmw r30,0xfff8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
889 00000004 stwu r1,0xffc0(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
890 00000008 or r30,r1,r1 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
891 0000000c or r2,r3,r3 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
892 00000010 li r0,0xff84 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
893 00000014 stb r0,0x20(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
894 00000018 lbz r0,0x20(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
895 0000001c stb r0,0x0(r2) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
896 00000020 or r3,r2,r2 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
897 00000024 lwz r1,0x0(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
898 00000028 lmw r30,0xfff8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
899 0000002c blr |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
900 _f1: |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
901 00000030 stmw r30,0xfff8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
902 00000034 stwu r1,0xffc0(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
903 00000038 or r30,r1,r1 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
904 0000003c mfspr r0,lr |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
905 00000040 bcl 20,31,0x44 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
906 00000044 mfspr r8,lr |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
907 00000048 mtspr lr,r0 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
908 0000004c or r9,r3,r3 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
909 00000050 addis r2,r8,0x0 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
910 00000054 addi r2,r2,0xb4 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
911 00000058 lwz r0,0x0(r2) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
912 0000005c lwz r11,0x4(r2) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
913 00000060 lwz r10,0x8(r2) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
914 00000064 lwz r2,0xc(r2) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
915 00000068 stw r0,0x20(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
916 0000006c stw r11,0x24(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
917 00000070 stw r10,0x28(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
918 00000074 stw r2,0x2c(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
919 00000078 lwz r0,0x20(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
920 0000007c lwz r2,0x24(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
921 00000080 lwz r11,0x28(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
922 00000084 lwz r10,0x2c(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
923 00000088 stw r0,0x0(r9) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
924 0000008c stw r2,0x4(r9) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
925 00000090 stw r11,0x8(r9) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
926 00000094 stw r10,0xc(r9) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
927 00000098 or r3,r9,r9 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
928 0000009c lwz r1,0x0(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
929 000000a0 lmw r30,0xfff8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
930 000000a4 blr |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
931 _main: |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
932 000000a8 mfspr r0,lr |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
933 000000ac stmw r30,0xfff8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
934 000000b0 stw r0,0x8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
935 000000b4 stwu r1,0xff90(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
936 000000b8 or r30,r1,r1 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
937 000000bc addi r3,r30,0x40 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
938 000000c0 bl 0x0 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
939 000000c4 addi r0,r30,0x50 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
940 000000c8 or r3,r0,r0 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
941 000000cc bl 0x30 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
942 000000d0 lbz r0,0x40(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
943 000000d4 extsb r2,r0 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
944 000000d8 lwz r0,0x58(r30) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
945 000000dc add r0,r2,r0 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
946 000000e0 or r3,r0,r0 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
947 000000e4 lwz r1,0x0(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
948 000000e8 lwz r0,0x8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
949 000000ec mtspr lr,r0 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
950 000000f0 lmw r30,0xfff8(r1) |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
951 000000f4 blr |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
952 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
953 |
ead041d93e36
- ppc doc and disas examples related to aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
954 |
497
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
955 ; ---------- C++ trivial and non-trivial aggrs passed to C funcs ----------> |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
956 ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
957 ; struct Trivial { int a; }; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
958 ; struct NonTrivial { int a; NonTrivial() : a(0) {} NonTrivial(const NonTrivial& rhs) : a(rhs.a) { } }; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
959 ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
960 ; extern "C" { |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
961 ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
962 ; void f1(struct Trivial s) { } |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
963 ; void f2(struct NonTrivial s) { } |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
964 ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
965 ; void f() |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
966 ; { |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
967 ; struct Trivial t; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
968 ; struct NonTrivial n; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
969 ; int a=1; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
970 ; a += 123; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
971 ; f1(t); |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
972 ; a -= 123; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
973 ; f2(n); |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
974 ; a -= 12; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
975 ; } |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
976 ; } |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
977 |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
978 |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
979 |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
980 ; output from darwin-8.0.1-ppc w/ gcc 3.3 |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
981 |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
982 _f1: |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
983 00000000 stmw r30,0xfff8(r1) |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
984 00000004 stwu r1,0xffd0(r1) |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
985 00000008 or r30,r1,r1 |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
986 0000000c stw r3,0x48(r30) |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
987 00000010 lwz r1,_f1(r1) |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
988 00000014 lmw r30,0xfff8(r1) |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
989 00000018 blr |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
990 _f2: |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
991 0000001c stmw r30,0xfff8(r1) |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
992 00000020 stwu r1,0xffd0(r1) |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
993 00000024 or r30,r1,r1 |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
994 00000028 lwz r1,_f1(r1) |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
995 0000002c lmw r30,0xfff8(r1) |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
996 00000030 blr |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
997 _f: |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
998 00000034 mfspr r0,lr ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
999 00000038 stmw r30,0xfff8(r1) ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1000 0000003c stw r0,0x8(r1) ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1001 00000040 stwu r1,0xff70(r1) ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1002 00000044 or r30,r1,r1 ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1003 00000048 addi r0,r30,0x50 ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1004 0000004c or r3,r0,r0 ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1005 00000050 bl 0x140 ; __ZN10NonTrivialC1Ev ; NonTrivial::NonTrivial() / ctor |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1006 00000054 li r0,0x1 ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1007 00000058 stw r0,0x60(r30) ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1008 0000005c lwz r2,0x60(r30) ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1009 00000060 addi r0,r2,0x7b ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1010 00000064 stw r0,0x60(r30) ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1011 00000068 lwz r0,0x40(r30) ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1012 0000006c or r3,r0,r0 ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1013 00000070 bl _f1 ; call f1(struct Trivial) |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1014 00000074 lwz r2,0x60(r30) ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1015 00000078 addi r0,r2,0xff85 ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1016 0000007c stw r0,0x60(r30) ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1017 00000080 addi r0,r30,0x70 ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1018 00000084 addi r2,r30,0x50 ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1019 00000088 or r3,r0,r0 ; | ptr to dest of copy of n |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1020 0000008c or r4,r2,r2 ; | copy n ptr to n |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1021 00000090 bl 0x120 ; __ZN10NonTrivialC1ERKS_ ; / NonTrivial::NonTrivial(const NonTrivial&) / copy ctor |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1022 00000094 addi r0,r30,0x70 ; \ |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1023 00000098 or r3,r0,r0 ; | f2 arg 0 (ptr to copy of struct NonTrivial), via ptr as non-trivial |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1024 0000009c bl _f2 ; call f2(struct NonTrivial) |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1025 000000a0 lwz r2,0x60(r30) ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1026 000000a4 addi r0,r2,0xfff4 ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1027 000000a8 stw r0,0x60(r30) ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1028 000000ac lwz r1,_f1(r1) ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1029 000000b0 lwz r0,0x8(r1) ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1030 000000b4 mtspr lr,r0 ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1031 000000b8 lmw r30,0xfff8(r1) ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1032 000000bc blr ; |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1033 |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1034 ; ... snip, removed code of ctor and copy ctor ... |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1035 |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1036 |
cb19b2fe2422
- more disas examples to check behaviour of passing C++ non-trivial aggregates by value; they all behave the same, calling the copy ctor first, passing a pointer then
Tassilo Philipp
parents:
473
diff
changeset
|
1037 |
327
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
1038 ; vim: ft=asm |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
1039 |