Mercurial > pub > dyncall > dyncall
annotate doc/disas_examples/sparc64.sparc64.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 | c73c59c8b553 |
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> |
474
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
2 ; |
327
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 ; } |
474
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
6 ; |
327
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 ; } |
474
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
13 ; |
327
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 debian-9.0-sparc64 w/ gcc 6.1.1 |
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 0000000000000000 <leaf_call>: |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
25 0: 9d e3 bf 50 save %sp, -176, %sp |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
26 4: 8a 10 00 19 mov %i1, %g5 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
27 8: 88 10 00 1a mov %i2, %g4 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
28 c: 86 10 00 1b mov %i3, %g3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
29 10: 84 10 00 1c mov %i4, %g2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
30 14: 82 10 00 1d mov %i5, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
31 18: f0 27 a8 7f st %i0, [ %fp + 0x87f ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
32 1c: ca 27 a8 87 st %g5, [ %fp + 0x887 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
33 20: c8 27 a8 8f st %g4, [ %fp + 0x88f ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
34 24: c6 27 a8 97 st %g3, [ %fp + 0x897 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
35 28: c4 27 a8 9f st %g2, [ %fp + 0x89f ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
36 2c: c2 27 a8 a7 st %g1, [ %fp + 0x8a7 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
37 30: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
38 34: 81 cf e0 08 rett %i7 + 8 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
39 38: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
40 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
41 000000000000003c <nonleaf_call>: |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
42 3c: 9d e3 bf 40 save %sp, -192, %sp ; prolog |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
43 40: 8a 10 00 19 mov %i1, %g5 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
44 44: 88 10 00 1a mov %i2, %g4 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
45 48: 86 10 00 1b mov %i3, %g3 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
46 4c: 84 10 00 1c mov %i4, %g2 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
47 50: 82 10 00 1d mov %i5, %g1 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
48 54: f0 27 a8 7f st %i0, [ %fp + 0x87f ] ; | write input to prev frame's spill area (e.g. offset = 128 for i0, jumping over i*/l* save area) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
49 58: ca 27 a8 87 st %g5, [ %fp + 0x887 ] ; | (pointlessly using an extra reg copy to g* for most) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
50 5c: c8 27 a8 8f st %g4, [ %fp + 0x88f ] ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
51 60: c6 27 a8 97 st %g3, [ %fp + 0x897 ] ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
52 64: c4 27 a8 9f st %g2, [ %fp + 0x89f ] ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
53 68: c2 27 a8 a7 st %g1, [ %fp + 0x8a7 ] ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
54 6c: 9c 03 bf 10 add %sp, -240, %sp ; alloca(220) - with padding, and ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
55 70: 82 03 a8 bf add %sp, 0x8bf, %g1 ; ... at least 192b at top of stack |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
56 74: 82 00 60 0f add %g1, 0xf, %g1 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
57 78: 83 30 70 04 srlx %g1, 4, %g1 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
58 7c: 83 28 70 04 sllx %g1, 4, %g1 ; | 16b alignment of alloca()'d space pointed to by g2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
59 80: 84 10 00 01 mov %g1, %g2 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
60 84: 82 10 20 4c mov 0x4c, %g1 ; 'L' -> g1, and ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
61 88: c2 28 80 00 stb %g1, [ %g2 ] ; ... store in aligned alloca()'d space |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
62 8c: c2 07 a8 b3 ld [ %fp + 0x8b3 ], %g1 ; arg 5 (fetched from prev frame's stack param area), ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
63 90: b9 38 60 00 sra %g1, 0, %i4 ; ... -> i4 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
64 94: c2 07 a8 a7 ld [ %fp + 0x8a7 ], %g1 ; arg 4 (fetched from prev frame's spill area), ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
65 98: bb 38 60 00 sra %g1, 0, %i5 ; ... -> i5 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
66 9c: c2 07 a8 9f ld [ %fp + 0x89f ], %g1 ; arg 3 (fetched from prev frame's spill area), ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
67 a0: 8b 38 60 00 sra %g1, 0, %g5 ; ... -> g5 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
68 a4: c2 07 a8 97 ld [ %fp + 0x897 ], %g1 ; arg 2 (fetched from prev frame's spill area), ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
69 a8: 89 38 60 00 sra %g1, 0, %g4 ; ... -> g4 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
70 ac: c2 07 a8 8f ld [ %fp + 0x88f ], %g1 ; arg 1 (fetched from prev frame's spill area), ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
71 b0: 87 38 60 00 sra %g1, 0, %g3 ; ... -> g3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
72 b4: c2 07 a8 87 ld [ %fp + 0x887 ], %g1 ; arg 0 (fetched from prev frame's spill area), ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
73 b8: 85 38 60 00 sra %g1, 0, %g2 ; ... -> g2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
74 bc: c2 07 a8 bb ld [ %fp + 0x8bb ], %g1 ; arg 6 (fetched from prev frame's stack param area), ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
75 c0: 83 38 60 00 sra %g1, 0, %g1 ; ... -> g1, and ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
76 c4: c2 73 a8 af stx %g1, [ %sp + 0x8af ] ; ... "pushed" onto stack |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
77 c8: 9a 10 00 1c mov %i4, %o5 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
78 cc: 98 10 00 1d mov %i5, %o4 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
79 d0: 96 10 00 05 mov %g5, %o3 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
80 d4: 94 10 00 04 mov %g4, %o2 ; | arg 0,1,2,3,4 (fetched from prev frame's spill area) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
81 d8: 92 10 00 03 mov %g3, %o1 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
82 dc: 90 10 00 02 mov %g2, %o0 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
83 e0: 40 00 00 00 call e0 <nonleaf_call+0xa4> ; call leaf_call (objdump not from final link but .o) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
84 e4: 01 00 00 00 nop ; branch delay slot |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
85 e8: 01 00 00 00 nop ; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
86 ec: 81 cf e0 08 rett %i7 + 8 ; | epilog |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
87 f0: 01 00 00 00 nop ; | branch delay slot |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
88 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
89 00000000000000f4 <main>: |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
90 f4: 9d e3 bf 40 save %sp, -192, %sp ; prolog |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
91 f8: 82 10 20 07 mov 7, %g1 ; arg 7, ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
92 fc: c2 73 a8 b7 stx %g1, [ %sp + 0x8b7 ] ; ... "pushed" onto stack |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
93 100: 82 10 20 06 mov 6, %g1 ; arg 6, ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
94 104: c2 73 a8 af stx %g1, [ %sp + 0x8af ] ; ... "pushed" onto stack |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
95 108: 9a 10 20 05 mov 5, %o5 ; arg 5 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
96 10c: 98 10 20 04 mov 4, %o4 ; arg 4 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
97 110: 96 10 20 03 mov 3, %o3 ; arg 3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
98 114: 94 10 20 02 mov 2, %o2 ; arg 2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
99 118: 92 10 20 01 mov 1, %o1 ; arg 1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
100 11c: 90 10 20 00 clr %o0 ; arg 0 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
101 120: 40 00 00 00 call 120 <main+0x2c> ; call nonleaf_call (objdump not from final link but .o) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
102 124: 01 00 00 00 nop ; branch delay slot |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
103 128: 82 10 20 00 clr %g1 ! 0 <leaf_call> ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
104 12c: 83 38 60 00 sra %g1, 0, %g1 ; | return value |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
105 130: b0 10 00 01 mov %g1, %i0 ; / |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
106 134: 81 cf e0 08 rett %i7 + 8 ; \ epilog |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
107 138: 01 00 00 00 nop ; | branch delay slot |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
108 |
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 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
111 ; output from freebsd-11.0-sparc64 w/ gcc 4.2.1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
112 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
113 0000000000000000 <leaf_call>: |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
114 0: 9d e3 bf 40 save %sp, -192, %sp |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
115 4: 82 10 00 18 mov %i0, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
116 8: 84 10 00 19 mov %i1, %g2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
117 c: 86 10 00 1a mov %i2, %g3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
118 10: 88 10 00 1b mov %i3, %g4 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
119 14: 8a 10 00 1c mov %i4, %g5 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
120 18: c2 27 a8 7f st %g1, [ %fp + 0x87f ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
121 1c: c4 27 a8 87 st %g2, [ %fp + 0x887 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
122 20: c6 27 a8 8f st %g3, [ %fp + 0x88f ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
123 24: c8 27 a8 97 st %g4, [ %fp + 0x897 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
124 28: ca 27 a8 9f st %g5, [ %fp + 0x89f ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
125 2c: fa 27 a8 a7 st %i5, [ %fp + 0x8a7 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
126 30: 81 cf e0 08 rett %i7 + 8 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
127 34: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
128 38: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
129 3c: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
130 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
131 0000000000000040 <nonleaf_call>: |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
132 40: 9d e3 bf 20 save %sp, -224, %sp |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
133 44: 82 10 00 18 mov %i0, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
134 48: 84 10 00 19 mov %i1, %g2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
135 4c: 86 10 00 1a mov %i2, %g3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
136 50: 88 10 00 1b mov %i3, %g4 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
137 54: 8a 10 00 1c mov %i4, %g5 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
138 58: 9a 10 00 1d mov %i5, %o5 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
139 5c: c2 27 a8 7f st %g1, [ %fp + 0x87f ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
140 60: c4 27 a8 87 st %g2, [ %fp + 0x887 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
141 64: c6 27 a8 8f st %g3, [ %fp + 0x88f ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
142 68: c8 27 a8 97 st %g4, [ %fp + 0x897 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
143 6c: ca 27 a8 9f st %g5, [ %fp + 0x89f ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
144 70: da 27 a8 a7 st %o5, [ %fp + 0x8a7 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
145 74: 9c 03 bf 20 add %sp, -224, %sp |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
146 78: 82 03 a8 bf add %sp, 0x8bf, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
147 7c: c2 77 a7 e7 stx %g1, [ %fp + 0x7e7 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
148 80: c4 5f a7 e7 ldx [ %fp + 0x7e7 ], %g2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
149 84: 82 00 a0 0f add %g2, 0xf, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
150 88: 83 30 70 04 srlx %g1, 4, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
151 8c: 83 28 70 04 sllx %g1, 4, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
152 90: c2 77 a7 e7 stx %g1, [ %fp + 0x7e7 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
153 94: c4 5f a7 e7 ldx [ %fp + 0x7e7 ], %g2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
154 98: 82 10 20 4c mov 0x4c, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
155 9c: c2 28 80 00 stb %g1, [ %g2 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
156 a0: c2 07 a8 87 ld [ %fp + 0x887 ], %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
157 a4: 89 38 60 00 sra %g1, 0, %g4 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
158 a8: c2 07 a8 8f ld [ %fp + 0x88f ], %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
159 ac: 8b 38 60 00 sra %g1, 0, %g5 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
160 b0: c2 07 a8 97 ld [ %fp + 0x897 ], %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
161 b4: 9b 38 60 00 sra %g1, 0, %o5 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
162 b8: c2 07 a8 9f ld [ %fp + 0x89f ], %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
163 bc: 99 38 60 00 sra %g1, 0, %o4 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
164 c0: c2 07 a8 a7 ld [ %fp + 0x8a7 ], %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
165 c4: 85 38 60 00 sra %g1, 0, %g2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
166 c8: c2 07 a8 b3 ld [ %fp + 0x8b3 ], %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
167 cc: 87 38 60 00 sra %g1, 0, %g3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
168 d0: c2 07 a8 bb ld [ %fp + 0x8bb ], %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
169 d4: 83 38 60 00 sra %g1, 0, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
170 d8: c2 73 a8 af stx %g1, [ %sp + 0x8af ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
171 dc: 90 10 00 04 mov %g4, %o0 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
172 e0: 92 10 00 05 mov %g5, %o1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
173 e4: 94 10 00 0d mov %o5, %o2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
174 e8: 96 10 00 0c mov %o4, %o3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
175 ec: 98 10 00 02 mov %g2, %o4 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
176 f0: 9a 10 00 03 mov %g3, %o5 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
177 f4: 40 00 00 00 call f4 <nonleaf_call+0xb4> |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
178 f8: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
179 fc: 81 cf e0 08 rett %i7 + 8 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
180 100: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
181 104: 30 68 00 07 b,a %xcc, 120 <main> |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
182 108: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
183 10c: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
184 110: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
185 114: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
186 118: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
187 11c: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
188 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
189 0000000000000120 <main>: |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
190 120: 9d e3 bf 30 save %sp, -208, %sp |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
191 124: 82 10 20 06 mov 6, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
192 128: c2 73 a8 af stx %g1, [ %sp + 0x8af ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
193 12c: 82 10 20 07 mov 7, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
194 130: c2 73 a8 b7 stx %g1, [ %sp + 0x8b7 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
195 134: 90 10 20 00 clr %o0 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
196 138: 92 10 20 01 mov 1, %o1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
197 13c: 94 10 20 02 mov 2, %o2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
198 140: 96 10 20 03 mov 3, %o3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
199 144: 98 10 20 04 mov 4, %o4 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
200 148: 9a 10 20 05 mov 5, %o5 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
201 14c: 40 00 00 00 call 14c <main+0x2c> |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
202 150: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
203 154: 82 10 20 00 clr %g1 ! 0 <leaf_call> |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
204 158: 83 38 60 00 sra %g1, 0, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
205 15c: b0 10 00 01 mov %g1, %i0 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
206 160: 81 cf e0 08 rett %i7 + 8 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
207 164: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
208 168: 30 68 00 06 b,a %xcc, 180 <main+0x60> |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
209 16c: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
210 170: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
211 174: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
212 178: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
213 17c: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
214 |
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 ; output from netbsd-7.1-sparc64 w/ gcc 4.8.5 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
218 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
219 0000000000000000 <leaf_call>: |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
220 0: 9d e3 bf 50 save %sp, -176, %sp |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
221 4: 8a 10 00 19 mov %i1, %g5 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
222 8: 88 10 00 1a mov %i2, %g4 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
223 c: 86 10 00 1b mov %i3, %g3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
224 10: 84 10 00 1c mov %i4, %g2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
225 14: 82 10 00 1d mov %i5, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
226 18: f0 27 a8 7f st %i0, [ %fp + 0x87f ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
227 1c: ca 27 a8 87 st %g5, [ %fp + 0x887 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
228 20: c8 27 a8 8f st %g4, [ %fp + 0x88f ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
229 24: c6 27 a8 97 st %g3, [ %fp + 0x897 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
230 28: c4 27 a8 9f st %g2, [ %fp + 0x89f ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
231 2c: c2 27 a8 a7 st %g1, [ %fp + 0x8a7 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
232 30: 81 cf e0 08 rett %i7 + 8 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
233 34: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
234 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
235 0000000000000038 <nonleaf_call>: |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
236 38: 9d e3 bf 40 save %sp, -192, %sp |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
237 3c: 8a 10 00 19 mov %i1, %g5 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
238 40: 88 10 00 1a mov %i2, %g4 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
239 44: 86 10 00 1b mov %i3, %g3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
240 48: 84 10 00 1c mov %i4, %g2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
241 4c: 82 10 00 1d mov %i5, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
242 50: f0 27 a8 7f st %i0, [ %fp + 0x87f ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
243 54: ca 27 a8 87 st %g5, [ %fp + 0x887 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
244 58: c8 27 a8 8f st %g4, [ %fp + 0x88f ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
245 5c: c6 27 a8 97 st %g3, [ %fp + 0x897 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
246 60: c4 27 a8 9f st %g2, [ %fp + 0x89f ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
247 64: c2 27 a8 a7 st %g1, [ %fp + 0x8a7 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
248 68: 9c 03 bf 10 add %sp, -240, %sp |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
249 6c: 82 03 a8 bf add %sp, 0x8bf, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
250 70: 82 00 60 0f add %g1, 0xf, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
251 74: 83 30 70 04 srlx %g1, 4, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
252 78: 83 28 70 04 sllx %g1, 4, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
253 7c: 84 10 20 4c mov 0x4c, %g2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
254 80: c4 28 40 00 stb %g2, [ %g1 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
255 84: c2 07 a8 87 ld [ %fp + 0x887 ], %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
256 88: bb 38 60 00 sra %g1, 0, %i5 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
257 8c: c2 07 a8 8f ld [ %fp + 0x88f ], %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
258 90: 8b 38 60 00 sra %g1, 0, %g5 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
259 94: c2 07 a8 97 ld [ %fp + 0x897 ], %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
260 98: 89 38 60 00 sra %g1, 0, %g4 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
261 9c: c2 07 a8 9f ld [ %fp + 0x89f ], %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
262 a0: 87 38 60 00 sra %g1, 0, %g3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
263 a4: c2 07 a8 a7 ld [ %fp + 0x8a7 ], %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
264 a8: 85 38 60 00 sra %g1, 0, %g2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
265 ac: c2 07 a8 b3 ld [ %fp + 0x8b3 ], %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
266 b0: 83 38 60 00 sra %g1, 0, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
267 b4: f8 07 a8 bb ld [ %fp + 0x8bb ], %i4 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
268 b8: b9 3f 20 00 sra %i4, 0, %i4 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
269 bc: f8 73 a8 af stx %i4, [ %sp + 0x8af ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
270 c0: 90 10 00 1d mov %i5, %o0 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
271 c4: 92 10 00 05 mov %g5, %o1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
272 c8: 94 10 00 04 mov %g4, %o2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
273 cc: 96 10 00 03 mov %g3, %o3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
274 d0: 98 10 00 02 mov %g2, %o4 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
275 d4: 9a 10 00 01 mov %g1, %o5 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
276 d8: 40 00 00 00 call d8 <nonleaf_call+0xa0> |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
277 dc: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
278 e0: 81 cf e0 08 rett %i7 + 8 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
279 e4: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
280 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
281 00000000000000e8 <main>: |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
282 e8: 9d e3 bf 40 save %sp, -192, %sp |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
283 ec: 82 10 20 06 mov 6, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
284 f0: c2 73 a8 af stx %g1, [ %sp + 0x8af ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
285 f4: 82 10 20 07 mov 7, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
286 f8: c2 73 a8 b7 stx %g1, [ %sp + 0x8b7 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
287 fc: 90 10 20 00 clr %o0 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
288 100: 92 10 20 01 mov 1, %o1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
289 104: 94 10 20 02 mov 2, %o2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
290 108: 96 10 20 03 mov 3, %o3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
291 10c: 98 10 20 04 mov 4, %o4 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
292 110: 9a 10 20 05 mov 5, %o5 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
293 114: 40 00 00 00 call 114 <main+0x2c> |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
294 118: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
295 11c: 82 10 20 00 clr %g1 ! 0 <leaf_call> |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
296 120: 83 38 60 00 sra %g1, 0, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
297 124: b0 10 00 01 mov %g1, %i0 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
298 128: 81 cf e0 08 rett %i7 + 8 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
299 12c: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
300 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
301 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
302 |
474
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
303 ; output from openbsd-6.0-sparc64 w/ gcc 4.2.1 |
327
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
304 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
305 0000000000000000 <leaf_call>: |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
306 0: 9d e3 bf 30 save %sp, -208, %sp |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
307 4: 82 10 00 18 mov %i0, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
308 8: 84 10 00 19 mov %i1, %g2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
309 c: 86 10 00 1a mov %i2, %g3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
310 10: 88 10 00 1b mov %i3, %g4 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
311 14: 8a 10 00 1c mov %i4, %g5 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
312 18: c2 27 a8 7f st %g1, [ %fp + 0x87f ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
313 1c: c4 27 a8 87 st %g2, [ %fp + 0x887 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
314 20: c6 27 a8 8f st %g3, [ %fp + 0x88f ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
315 24: c8 27 a8 97 st %g4, [ %fp + 0x897 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
316 28: ca 27 a8 9f st %g5, [ %fp + 0x89f ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
317 2c: fa 27 a8 a7 st %i5, [ %fp + 0x8a7 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
318 30: 81 cf e0 08 rett %i7 + 8 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
319 34: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
320 38: ae 03 c0 17 add %o7, %l7, %l7 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
321 3c: 81 c3 e0 08 retl |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
322 40: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
323 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
324 0000000000000044 <nonleaf_call>: |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
325 44: 9d e3 bf 10 save %sp, -240, %sp |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
326 48: 2f 00 00 00 sethi %hi(0), %l7 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
327 4c: ae 05 e0 00 add %l7, 0, %l7 ! 0 <leaf_call> |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
328 50: 7f ff ff fa call 38 <leaf_call+0x38> |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
329 54: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
330 58: 82 10 00 18 mov %i0, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
331 5c: 84 10 00 19 mov %i1, %g2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
332 60: 86 10 00 1a mov %i2, %g3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
333 64: 88 10 00 1b mov %i3, %g4 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
334 68: 8a 10 00 1c mov %i4, %g5 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
335 6c: 9a 10 00 1d mov %i5, %o5 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
336 70: c2 27 a8 7f st %g1, [ %fp + 0x87f ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
337 74: c4 27 a8 87 st %g2, [ %fp + 0x887 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
338 78: c6 27 a8 8f st %g3, [ %fp + 0x88f ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
339 7c: c8 27 a8 97 st %g4, [ %fp + 0x897 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
340 80: ca 27 a8 9f st %g5, [ %fp + 0x89f ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
341 84: da 27 a8 a7 st %o5, [ %fp + 0x8a7 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
342 88: 03 00 00 00 sethi %hi(0), %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
343 8c: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
344 90: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
345 94: c4 58 40 00 ldx [ %g1 ], %g2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
346 98: c4 77 a7 e7 stx %g2, [ %fp + 0x7e7 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
347 9c: 84 10 20 00 clr %g2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
348 a0: 9c 03 bf 20 add %sp, -224, %sp |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
349 a4: 86 03 a8 bf add %sp, 0x8bf, %g3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
350 a8: c6 77 a7 d7 stx %g3, [ %fp + 0x7d7 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
351 ac: c4 5f a7 d7 ldx [ %fp + 0x7d7 ], %g2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
352 b0: 82 00 a0 0f add %g2, 0xf, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
353 b4: 83 30 70 04 srlx %g1, 4, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
354 b8: 83 28 70 04 sllx %g1, 4, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
355 bc: c2 77 a7 d7 stx %g1, [ %fp + 0x7d7 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
356 c0: c4 5f a7 d7 ldx [ %fp + 0x7d7 ], %g2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
357 c4: 82 10 20 4c mov 0x4c, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
358 c8: c2 28 80 00 stb %g1, [ %g2 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
359 cc: c2 07 a8 87 ld [ %fp + 0x887 ], %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
360 d0: 89 38 60 00 sra %g1, 0, %g4 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
361 d4: c2 07 a8 8f ld [ %fp + 0x88f ], %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
362 d8: 8b 38 60 00 sra %g1, 0, %g5 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
363 dc: c2 07 a8 97 ld [ %fp + 0x897 ], %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
364 e0: 9b 38 60 00 sra %g1, 0, %o5 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
365 e4: c2 07 a8 9f ld [ %fp + 0x89f ], %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
366 e8: 99 38 60 00 sra %g1, 0, %o4 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
367 ec: c2 07 a8 a7 ld [ %fp + 0x8a7 ], %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
368 f0: 85 38 60 00 sra %g1, 0, %g2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
369 f4: c2 07 a8 b3 ld [ %fp + 0x8b3 ], %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
370 f8: 87 38 60 00 sra %g1, 0, %g3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
371 fc: c2 07 a8 bb ld [ %fp + 0x8bb ], %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
372 100: 83 38 60 00 sra %g1, 0, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
373 104: c2 73 a8 af stx %g1, [ %sp + 0x8af ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
374 108: 90 10 00 04 mov %g4, %o0 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
375 10c: 92 10 00 05 mov %g5, %o1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
376 110: 94 10 00 0d mov %o5, %o2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
377 114: 96 10 00 0c mov %o4, %o3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
378 118: 98 10 00 02 mov %g2, %o4 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
379 11c: 9a 10 00 03 mov %g3, %o5 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
380 120: 40 00 00 00 call 120 <nonleaf_call+0xdc> |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
381 124: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
382 128: 03 00 00 00 sethi %hi(0), %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
383 12c: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
384 130: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
385 134: c6 5f a7 e7 ldx [ %fp + 0x7e7 ], %g3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
386 138: c4 58 40 00 ldx [ %g1 ], %g2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
387 13c: 86 18 c0 02 xor %g3, %g2, %g3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
388 140: 84 10 20 00 clr %g2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
389 144: 82 10 00 03 mov %g3, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
390 148: 02 c8 40 08 brz %g1, 168 <nonleaf_call+0x124> |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
391 14c: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
392 150: 03 00 00 00 sethi %hi(0), %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
393 154: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
394 158: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
395 15c: 90 10 00 01 mov %g1, %o0 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
396 160: 40 00 00 00 call 160 <nonleaf_call+0x11c> |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
397 164: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
398 168: 81 cf e0 08 rett %i7 + 8 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
399 16c: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
400 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
401 0000000000000170 <main>: |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
402 170: 9d e3 bf 20 save %sp, -224, %sp |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
403 174: 82 10 20 06 mov 6, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
404 178: c2 73 a8 af stx %g1, [ %sp + 0x8af ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
405 17c: 82 10 20 07 mov 7, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
406 180: c2 73 a8 b7 stx %g1, [ %sp + 0x8b7 ] |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
407 184: 90 10 20 00 clr %o0 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
408 188: 92 10 20 01 mov 1, %o1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
409 18c: 94 10 20 02 mov 2, %o2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
410 190: 96 10 20 03 mov 3, %o3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
411 194: 98 10 20 04 mov 4, %o4 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
412 198: 9a 10 20 05 mov 5, %o5 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
413 19c: 40 00 00 00 call 19c <main+0x2c> |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
414 1a0: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
415 1a4: 82 10 20 00 clr %g1 ! 0 <leaf_call> |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
416 1a8: 83 38 60 00 sra %g1, 0, %g1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
417 1ac: b0 10 00 01 mov %g1, %i0 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
418 1b0: 81 cf e0 08 rett %i7 + 8 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
419 1b4: 01 00 00 00 nop |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
420 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
421 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
422 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
423 ; --------------------- with float params, aggregate return value (<32b, passed in regs) and ellipsis with float -------------------> |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
424 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
425 ; #include <stdlib.h> |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
426 ; #include <stdarg.h> |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
427 ; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
428 ; void leaf_call(int b, float c, int d, float e, int f, int g, float h) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
429 ; { |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
430 ; } |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
431 ; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
432 ; struct aggr { int x; int y; int z; }; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
433 ; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
434 ; struct aggr nonleaf_call(int a, int b, float c, int d, float e, int f, ...) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
435 ; { |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
436 ; va_list v; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
437 ; int g; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
438 ; float h; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
439 ; struct aggr st = { b, d, f }; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
440 ; va_start(v, f); |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
441 ; g = va_arg(v, int); |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
442 ; h = va_arg(v, float); |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
443 ; /* use some local data */ |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
444 ; *(char*)alloca(220) = 'L'; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
445 ; 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
|
446 ; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
447 ; return st; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
448 ; } |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
449 ; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
450 ; int main() |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
451 ; { |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
452 ; struct aggr st = nonleaf_call(0, 1, 2.f, 3, 4.f, 5, 6, 7.f); |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
453 ; return 0; |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
454 ; } |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
455 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
456 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
457 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
458 ; output from netbsd-7.1-sparc64 w/ gcc 4.8.5 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
459 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
460 0000000000000000 <leaf_call>: |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
461 0: 9d e3 bf 50 save %sp, -176, %sp ; prolog |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
462 4: 88 10 00 18 mov %i0, %g4 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
463 8: c7 27 a8 87 st %f3, [ %fp + 0x887 ] ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
464 c: 86 10 00 1a mov %i2, %g3 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
465 10: cf 27 a8 97 st %f7, [ %fp + 0x897 ] ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
466 14: 84 10 00 1c mov %i4, %g2 ; | write input to prev frame's spill area (e.g. offset = 128 for i0, jumping over i*/l* save area) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
467 18: 82 10 00 1d mov %i5, %g1 ; | (pointlessly using an extra reg copy to g* for most) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
468 1c: db 27 a8 af st %f13, [ %fp + 0x8af ] ; | note: float args are spilled as are all others |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
469 20: c8 27 a8 7f st %g4, [ %fp + 0x87f ] ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
470 24: c6 27 a8 8f st %g3, [ %fp + 0x88f ] ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
471 28: c4 27 a8 9f st %g2, [ %fp + 0x89f ] ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
472 2c: c2 27 a8 a7 st %g1, [ %fp + 0x8a7 ] ; / |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
473 30: 81 cf e0 08 rett %i7 + 8 ; \ trap epilog |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
474 34: 01 00 00 00 nop ; | branch delay slot |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
475 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
476 0000000000000038 <nonleaf_call>: |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
477 38: 9d e3 bf 20 save %sp, -224, %sp ; prolog |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
478 3c: 88 10 00 18 mov %i0, %g4 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
479 40: 86 10 00 19 mov %i1, %g3 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
480 44: cb 27 a8 8f st %f5, [ %fp + 0x88f ] ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
481 48: 84 10 00 1b mov %i3, %g2 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
482 4c: d3 27 a8 9f st %f9, [ %fp + 0x89f ] ; | write input to prev frame's spill area (e.g. offset = 128 for i0, jumping over i*/l* save area) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
483 50: 82 10 00 1d mov %i5, %g1 ; | (pointlessly using an extra reg copy to g* for most) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
484 54: c8 27 a8 7f st %g4, [ %fp + 0x87f ] ; | note: float args are spilled as are all others |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
485 58: c6 27 a8 87 st %g3, [ %fp + 0x887 ] ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
486 5c: c4 27 a8 97 st %g2, [ %fp + 0x897 ] ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
487 60: c2 27 a8 a7 st %g1, [ %fp + 0x8a7 ] ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
488 64: c2 07 a8 87 ld [ %fp + 0x887 ], %g1 ; in arg 1 (int b, fetched from prev frame's spill area), ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
489 68: c2 27 a7 db st %g1, [ %fp + 0x7db ] ; ... copied to local space (0x7db - bias = -36) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
490 6c: c2 07 a8 97 ld [ %fp + 0x897 ], %g1 ; in arg 3 (int d, fetched from prev frame's spill area), ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
491 70: c2 27 a7 df st %g1, [ %fp + 0x7df ] ; ... copied to local space (0x7df - bias = -32) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
492 74: c2 07 a8 a7 ld [ %fp + 0x8a7 ], %g1 ; in arg 5 (int f, fetched from prev frame's spill area), ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
493 78: c2 27 a7 e3 st %g1, [ %fp + 0x7e3 ] ; ... copied to local space (0x7e3 - bias = -28) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
494 7c: 82 07 a8 af add %fp, 0x8af, %g1 ; va_list: pointer to arg 5 -> g1 ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
495 80: c2 77 a7 e7 stx %g1, [ %fp + 0x7e7 ] ; ... store to local space (0x7e7 - bias = -24) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
496 84: c2 5f a7 e7 ldx [ %fp + 0x7e7 ], %g1 ; reread to start iteration (pointlessly) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
497 88: 84 00 60 04 add %g1, 4, %g2 ; point read ptr in g2 to first unnamed param (int) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
498 8c: c4 00 80 00 ld [ %g2 ], %g2 ; in arg 6 (fetched from prev frame's stack param area), ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
499 90: c4 27 a7 fb st %g2, [ %fp + 0x7fb ] ; ... copied to local space (0x7fb - bias = -4) helper var (probably int g) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
500 94: 82 00 60 08 add %g1, 8, %g1 ; point read ptr in g1 to second unnamed param (float, promoted to double), ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
501 98: c2 77 a7 e7 stx %g1, [ %fp + 0x7e7 ] ; ... store in local space (0x7fb - bias = -24) |
331 | 502 9c: 91 d0 20 05 ta 5 ; trap - not sure what else is involved (objdump was made from .o, not finally linked exec) - maybe just b/c objdump skipped this for the output? |
327
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
503 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
504 00000000000000a0 <main>: |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
505 a0: 9d e3 bf 30 save %sp, -208, %sp ; prolog |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
506 a4: 03 00 00 00 sethi %hi(0), %g1 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
507 a8: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
508 ac: 83 28 70 0c sllx %g1, 0xc, %g1 ; | prep arg 2, load from static data into f11 (addr = 0 b/c objdumped .o, not final linked) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
509 b0: 82 10 60 00 mov %g1, %g1 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
510 b4: d7 00 40 00 ld [ %g1 ], %f11 ; / |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
511 b8: 03 00 00 00 sethi %hi(0), %g1 ; \ |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
512 bc: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> ; | prep arg 4, load from static data into f10 (addr = 0 b/c objdumped .o, not final linked) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
513 c0: 83 28 70 0c sllx %g1, 0xc, %g1 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
514 c4: 82 10 60 00 mov %g1, %g1 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
515 c8: d5 00 40 00 ld [ %g1 ], %f10 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
516 cc: 82 10 20 06 mov 6, %g1 ; arg 6, ... |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
517 d0: c2 73 a8 af stx %g1, [ %sp + 0x8af ] ; ... "pushed" onto stack |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
518 d4: 03 00 00 00 sethi %hi(0), %g1 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
519 d8: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
520 dc: 83 28 70 0c sllx %g1, 0xc, %g1 ; | prep arg 7, load from static data as double (b/c of vararg promotion) into d8 (addr = 0 b/c objdumped .o, not final linked) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
521 e0: 82 10 60 00 mov %g1, %g1 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
522 e4: d1 18 40 00 ldd [ %g1 ], %f8 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
523 e8: d1 3b a8 b7 std %f8, [ %sp + 0x8b7 ] ; arg 7 "pushed" onto stack as double |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
524 ec: 90 10 20 00 clr %o0 ; arg 0 (note, this is not the pointer to the aggregate return value, b/c latter <= 32b) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
525 f0: 92 10 20 01 mov 1, %o1 ; arg 1 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
526 f4: 8b a0 00 2b fmovs %f11, %f5 ; arg 2 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
527 f8: 96 10 20 03 mov 3, %o3 ; arg 3 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
528 fc: 93 a0 00 2a fmovs %f10, %f9 ; arg 4 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
529 100: 9a 10 20 05 mov 5, %o5 ; arg 5 |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
530 104: 40 00 00 00 call 104 <main+0x64> ; call nonleaf_call (objdump not from final link but .o) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
531 108: 01 00 00 00 nop ; branch delay slot |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
532 10c: 84 10 00 08 mov %o0, %g2 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
533 110: 82 10 00 09 mov %o1, %g1 ; / get return value (12b aggregate) out of 2 regs (16b) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
534 114: 87 30 b0 20 srlx %g2, 0x20, %g3 ; \ |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
535 118: c8 07 a7 f3 ld [ %fp + 0x7f3 ], %g4 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
536 11c: 88 09 20 00 and %g4, 0, %g4 ; | store 1st struct field (int) by g2 >> 32 (and some other operations unnecessary here) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
537 120: 86 11 00 03 or %g4, %g3, %g3 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
538 124: c6 27 a7 f3 st %g3, [ %fp + 0x7f3 ] ; / |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
539 128: 86 10 3f ff mov -1, %g3 ; \ |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
540 12c: 87 30 f0 20 srlx %g3, 0x20, %g3 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
541 130: 84 08 80 03 and %g2, %g3, %g2 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
542 134: c6 07 a7 f7 ld [ %fp + 0x7f7 ], %g3 ; | store 2nd struct field (int) by (-1 >> 32) & g2 (and then some other operations unnecessary here) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
543 138: 86 08 e0 00 and %g3, 0, %g3 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
544 13c: 84 10 c0 02 or %g3, %g2, %g2 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
545 140: c4 27 a7 f7 st %g2, [ %fp + 0x7f7 ] ; / |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
546 144: 83 38 70 20 srax %g1, 0x20, %g1 ; \ |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
547 148: c4 07 a7 fb ld [ %fp + 0x7fb ], %g2 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
548 14c: 84 08 a0 00 and %g2, 0, %g2 ; | store 3rd struct field (int) by g1 >> 32 (and then some other operations unnecessary here) |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
549 150: 82 10 80 01 or %g2, %g1, %g1 ; | |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
550 154: c2 27 a7 fb st %g1, [ %fp + 0x7fb ] ; / |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
551 158: 82 10 20 00 clr %g1 ; \ |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
552 15c: 83 38 60 00 sra %g1, 0, %g1 ; / return value |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
553 160: b0 10 00 01 mov %g1, %i0 ; \ |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
554 164: 81 cf e0 08 rett %i7 + 8 ; | epilog |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
555 168: 01 00 00 00 nop ; | branch delay slot |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
556 |
474
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
557 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
558 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
559 ; ---------- structs by value ----------> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
560 ; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
561 ; struct A { int i, j; long long l; }; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
562 ; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
563 ; void leaf_call(int b, int c, int d, int e, struct A f, int g, int h) |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
564 ; { |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
565 ; } |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
566 ; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
567 ; void nonleaf_call(int a, int b, int c, int d, int e, struct A f, int g, int h) |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
568 ; { |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
569 ; /* use some local data */ |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
570 ; char l[100] ={ 'L'}; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
571 ; leaf_call(b, c, d, e, f, g, h); |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
572 ; } |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
573 ; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
574 ; int main() |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
575 ; { |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
576 ; nonleaf_call(0, 1, 2, 3, 4, (struct A){5, 6, 7ll}, 8, 9); |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
577 ; return 0; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
578 ; } |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
579 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
580 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
581 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
582 ; output from openbsd-6.0-sparc64 w/ gcc 4.2.1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
583 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
584 0000000000000000 <leaf_call>: |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
585 0: 9d e3 bf 30 save %sp, -208, %sp |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
586 4: 82 10 00 18 mov %i0, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
587 8: 84 10 00 19 mov %i1, %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
588 c: 86 10 00 1a mov %i2, %g3 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
589 10: 88 10 00 1b mov %i3, %g4 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
590 14: 8a 10 00 1c mov %i4, %g5 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
591 18: c2 27 a8 7f st %g1, [ %fp + 0x87f ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
592 1c: c4 27 a8 87 st %g2, [ %fp + 0x887 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
593 20: c6 27 a8 8f st %g3, [ %fp + 0x88f ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
594 24: c8 27 a8 97 st %g4, [ %fp + 0x897 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
595 28: ca 77 a8 9f stx %g5, [ %fp + 0x89f ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
596 2c: fa 77 a8 a7 stx %i5, [ %fp + 0x8a7 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
597 30: 81 cf e0 08 rett %i7 + 8 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
598 34: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
599 38: ae 03 c0 17 add %o7, %l7, %l7 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
600 3c: 81 c3 e0 08 retl |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
601 40: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
602 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
603 0000000000000044 <nonleaf_call>: |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
604 44: 9d e3 be c0 save %sp, -320, %sp |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
605 48: 2f 00 00 00 sethi %hi(0), %l7 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
606 4c: ae 05 e0 00 add %l7, 0, %l7 ! 0 <leaf_call> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
607 50: 7f ff ff fa call 38 <leaf_call+0x38> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
608 54: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
609 58: 84 10 00 18 mov %i0, %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
610 5c: 86 10 00 19 mov %i1, %g3 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
611 60: 88 10 00 1a mov %i2, %g4 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
612 64: 8a 10 00 1b mov %i3, %g5 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
613 68: 9a 10 00 1c mov %i4, %o5 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
614 6c: 82 10 00 1d mov %i5, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
615 70: c2 77 a8 a7 stx %g1, [ %fp + 0x8a7 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
616 74: c4 27 a8 7f st %g2, [ %fp + 0x87f ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
617 78: c6 27 a8 87 st %g3, [ %fp + 0x887 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
618 7c: c8 27 a8 8f st %g4, [ %fp + 0x88f ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
619 80: ca 27 a8 97 st %g5, [ %fp + 0x897 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
620 84: da 27 a8 9f st %o5, [ %fp + 0x89f ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
621 88: 03 00 00 00 sethi %hi(0), %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
622 8c: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
623 90: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
624 94: c4 58 40 00 ldx [ %g1 ], %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
625 98: c4 77 a7 e7 stx %g2, [ %fp + 0x7e7 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
626 9c: 84 10 20 00 clr %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
627 a0: c0 77 a7 7f clrx [ %fp + 0x77f ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
628 a4: c0 77 a7 87 clrx [ %fp + 0x787 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
629 a8: c0 77 a7 8f clrx [ %fp + 0x78f ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
630 ac: c0 77 a7 97 clrx [ %fp + 0x797 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
631 b0: c0 77 a7 9f clrx [ %fp + 0x79f ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
632 b4: c0 77 a7 a7 clrx [ %fp + 0x7a7 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
633 b8: c0 77 a7 af clrx [ %fp + 0x7af ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
634 bc: c0 77 a7 b7 clrx [ %fp + 0x7b7 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
635 c0: c0 77 a7 bf clrx [ %fp + 0x7bf ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
636 c4: c0 77 a7 c7 clrx [ %fp + 0x7c7 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
637 c8: c0 77 a7 cf clrx [ %fp + 0x7cf ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
638 cc: c0 77 a7 d7 clrx [ %fp + 0x7d7 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
639 d0: c0 27 a7 df clr [ %fp + 0x7df ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
640 d4: 82 10 20 4c mov 0x4c, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
641 d8: c2 2f a7 7f stb %g1, [ %fp + 0x77f ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
642 dc: c2 07 a8 87 ld [ %fp + 0x887 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
643 e0: 85 38 60 00 sra %g1, 0, %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
644 e4: c2 07 a8 8f ld [ %fp + 0x88f ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
645 e8: 87 38 60 00 sra %g1, 0, %g3 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
646 ec: c2 07 a8 97 ld [ %fp + 0x897 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
647 f0: 89 38 60 00 sra %g1, 0, %g4 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
648 f4: c2 07 a8 9f ld [ %fp + 0x89f ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
649 f8: 8b 38 60 00 sra %g1, 0, %g5 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
650 fc: da 5f a8 a7 ldx [ %fp + 0x8a7 ], %o5 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
651 100: de 5f a8 af ldx [ %fp + 0x8af ], %o7 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
652 104: c2 07 a8 bb ld [ %fp + 0x8bb ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
653 108: 83 38 60 00 sra %g1, 0, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
654 10c: c2 73 a8 af stx %g1, [ %sp + 0x8af ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
655 110: c2 07 a8 c3 ld [ %fp + 0x8c3 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
656 114: 83 38 60 00 sra %g1, 0, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
657 118: c2 73 a8 b7 stx %g1, [ %sp + 0x8b7 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
658 11c: 90 10 00 02 mov %g2, %o0 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
659 120: 92 10 00 03 mov %g3, %o1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
660 124: 94 10 00 04 mov %g4, %o2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
661 128: 96 10 00 05 mov %g5, %o3 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
662 12c: 98 10 00 0d mov %o5, %o4 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
663 130: 9a 10 00 0f mov %o7, %o5 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
664 134: 40 00 00 00 call 134 <nonleaf_call+0xf0> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
665 138: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
666 13c: 03 00 00 00 sethi %hi(0), %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
667 140: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
668 144: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
669 148: c6 5f a7 e7 ldx [ %fp + 0x7e7 ], %g3 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
670 14c: c4 58 40 00 ldx [ %g1 ], %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
671 150: 86 18 c0 02 xor %g3, %g2, %g3 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
672 154: 84 10 20 00 clr %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
673 158: 82 10 00 03 mov %g3, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
674 15c: 02 c8 40 08 brz %g1, 17c <nonleaf_call+0x138> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
675 160: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
676 164: 03 00 00 00 sethi %hi(0), %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
677 168: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
678 16c: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
679 170: 90 10 00 01 mov %g1, %o0 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
680 174: 40 00 00 00 call 174 <nonleaf_call+0x130> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
681 178: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
682 17c: 81 cf e0 08 rett %i7 + 8 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
683 180: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
684 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
685 0000000000000184 <main>: |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
686 184: 9d e3 bf 00 save %sp, -256, %sp ; prolog |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
687 188: 82 10 20 05 mov 5, %g1 ; | \ i |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
688 18c: c2 27 a7 d7 st %g1, [ %fp + 0x7d7 ] ; | / |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
689 190: 82 10 20 06 mov 6, %g1 ; | put together local struct \ j |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
690 194: c2 27 a7 db st %g1, [ %fp + 0x7db ] ; | / |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
691 198: 82 10 20 07 mov 7, %g1 ; | \ l |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
692 19c: c2 77 a7 df stx %g1, [ %fp + 0x7df ] ; / / |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
693 1a0: 84 03 a8 7f add %sp, 0x87f, %g2 ; \ |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
694 1a4: c2 5f a7 d7 ldx [ %fp + 0x7d7 ], %g1 ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
695 1a8: c2 70 a0 28 stx %g1, [ %g2 + 0x28 ] ; | (part of) arg 5, fetched from local area, "pushed" onto stack (entirely, so first 8 bytes (i,j) are already placed in reg save area) |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
696 1ac: c2 5f a7 df ldx [ %fp + 0x7df ], %g1 ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
697 1b0: c2 70 a0 30 stx %g1, [ %g2 + 0x30 ] ; / |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
698 1b4: c6 58 a0 28 ldx [ %g2 + 0x28 ], %g3 ; get first 8 bytes of struct -> g3 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
699 1b8: 82 10 20 08 mov 8, %g1 ; arg 6, ... |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
700 1bc: c2 70 a0 38 stx %g1, [ %g2 + 0x38 ] ; ... "pushed" onto stack |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
701 1c0: 82 10 20 09 mov 9, %g1 ; arg 7 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
702 1c4: c2 70 a0 40 stx %g1, [ %g2 + 0x40 ] ; ... "pushed" onto stack |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
703 1c8: 90 10 20 00 clr %o0 ; arg 0 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
704 1cc: 92 10 20 01 mov 1, %o1 ; arg 1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
705 1d0: 94 10 20 02 mov 2, %o2 ; arg 2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
706 1d4: 96 10 20 03 mov 3, %o3 ; arg 3 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
707 1d8: 98 10 20 04 mov 4, %o4 ; arg 4 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
708 1dc: 9a 10 00 03 mov %g3, %o5 ; (part of) arg 5 (first 8 bytes of struct) |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
709 1e0: 40 00 00 00 call 1e0 <main+0x5c> ; call nonleaf_call (objdump not from final link but .o) |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
710 1e4: 01 00 00 00 nop ; branch delay slot |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
711 1e8: 82 10 20 00 clr %g1 ! 0 <leaf_call> ; \ |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
712 1ec: 83 38 60 00 sra %g1, 0, %g1 ; / return value |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
713 1f0: b0 10 00 01 mov %g1, %i0 ; \ |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
714 1f4: 81 cf e0 08 rett %i7 + 8 ; | epilog |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
715 1f8: 01 00 00 00 nop ; | branch delay slot |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
716 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
717 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
718 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
719 ; ---------- structs by value, complex example (multiple structs) ----------> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
720 ; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
721 ; struct A { int i, j; float f; }; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
722 ; struct B { double d; long long l; }; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
723 ; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
724 ; 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) |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
725 ; { |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
726 ; } |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
727 ; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
728 ; 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) |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
729 ; { |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
730 ; /* use some local data */ |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
731 ; char l[100] ={ 'L'}; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
732 ; leaf_call(b, c, d, e, f, g, h, i, j); |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
733 ; } |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
734 ; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
735 ; int main() |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
736 ; { |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
737 ; 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); |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
738 ; return 0; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
739 ; } |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
740 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
741 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
742 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
743 ; output from openbsd-6.0-sparc64 w/ gcc 4.2.1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
744 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
745 0000000000000000 <leaf_call>: |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
746 0: 9d e3 bf 30 save %sp, -208, %sp |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
747 4: 82 10 00 18 mov %i0, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
748 8: 84 10 00 19 mov %i1, %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
749 c: 91 a0 00 24 fmovs %f4, %f8 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
750 10: 95 a0 00 46 fmovd %f6, %f10 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
751 14: 86 10 00 1c mov %i4, %g3 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
752 18: 88 10 00 1d mov %i5, %g4 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
753 1c: 93 a0 00 30 fmovs %f16, %f9 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
754 20: 99 a0 00 52 fmovd %f18, %f12 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
755 24: c2 27 a8 7f st %g1, [ %fp + 0x87f ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
756 28: c4 77 a8 87 stx %g2, [ %fp + 0x887 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
757 2c: d1 27 a8 8f st %f8, [ %fp + 0x88f ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
758 30: d5 3f a8 97 std %f10, [ %fp + 0x897 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
759 34: c6 77 a8 9f stx %g3, [ %fp + 0x89f ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
760 38: c8 27 a8 a7 st %g4, [ %fp + 0x8a7 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
761 3c: d3 27 a8 bf st %f9, [ %fp + 0x8bf ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
762 40: d9 3f a8 c7 std %f12, [ %fp + 0x8c7 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
763 44: 81 cf e0 08 rett %i7 + 8 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
764 48: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
765 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
766 4c: ae 03 c0 17 add %o7, %l7, %l7 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
767 50: 81 c3 e0 08 retl |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
768 54: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
769 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
770 0000000000000058 <nonleaf_call>: |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
771 58: 9d e3 be 90 save %sp, -368, %sp |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
772 5c: 2f 00 00 00 sethi %hi(0), %l7 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
773 60: ae 05 e0 00 add %l7, 0, %l7 ! 0 <leaf_call> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
774 64: 7f ff ff fa call 4c <leaf_call+0x4c> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
775 68: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
776 6c: 82 10 00 18 mov %i0, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
777 70: 84 10 00 19 mov %i1, %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
778 74: 86 10 00 1a mov %i2, %g3 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
779 78: 95 a0 00 26 fmovs %f6, %f10 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
780 7c: 88 10 00 1d mov %i5, %g4 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
781 80: 97 a0 00 32 fmovs %f18, %f11 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
782 84: 99 a0 00 54 fmovd %f20, %f12 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
783 88: c2 27 a8 7f st %g1, [ %fp + 0x87f ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
784 8c: c4 27 a8 87 st %g2, [ %fp + 0x887 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
785 90: c6 77 a8 8f stx %g3, [ %fp + 0x88f ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
786 94: d5 27 a8 97 st %f10, [ %fp + 0x897 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
787 98: d1 3f a8 9f std %f8, [ %fp + 0x89f ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
788 9c: c8 77 a8 a7 stx %g4, [ %fp + 0x8a7 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
789 a0: d7 27 a8 c7 st %f11, [ %fp + 0x8c7 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
790 a4: d9 3f a8 cf std %f12, [ %fp + 0x8cf ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
791 a8: 03 00 00 00 sethi %hi(0), %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
792 ac: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
793 b0: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
794 b4: c4 58 40 00 ldx [ %g1 ], %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
795 b8: c4 77 a7 e7 stx %g2, [ %fp + 0x7e7 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
796 bc: 84 10 20 00 clr %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
797 c0: c0 77 a7 7f clrx [ %fp + 0x77f ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
798 c4: c0 77 a7 87 clrx [ %fp + 0x787 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
799 c8: c0 77 a7 8f clrx [ %fp + 0x78f ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
800 cc: c0 77 a7 97 clrx [ %fp + 0x797 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
801 d0: c0 77 a7 9f clrx [ %fp + 0x79f ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
802 d4: c0 77 a7 a7 clrx [ %fp + 0x7a7 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
803 d8: c0 77 a7 af clrx [ %fp + 0x7af ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
804 dc: c0 77 a7 b7 clrx [ %fp + 0x7b7 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
805 e0: c0 77 a7 bf clrx [ %fp + 0x7bf ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
806 e4: c0 77 a7 c7 clrx [ %fp + 0x7c7 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
807 e8: c0 77 a7 cf clrx [ %fp + 0x7cf ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
808 ec: c0 77 a7 d7 clrx [ %fp + 0x7d7 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
809 f0: c0 27 a7 df clr [ %fp + 0x7df ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
810 f4: 82 10 20 4c mov 0x4c, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
811 f8: c2 2f a7 7f stb %g1, [ %fp + 0x77f ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
812 fc: 84 03 a8 7f add %sp, 0x87f, %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
813 100: c2 07 a8 87 ld [ %fp + 0x887 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
814 104: 87 38 60 00 sra %g1, 0, %g3 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
815 108: c8 5f a8 8f ldx [ %fp + 0x88f ], %g4 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
816 10c: d1 07 a8 97 ld [ %fp + 0x897 ], %f8 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
817 110: d5 1f a8 9f ldd [ %fp + 0x89f ], %f10 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
818 114: ca 5f a8 a7 ldx [ %fp + 0x8a7 ], %g5 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
819 118: c2 07 a8 b3 ld [ %fp + 0x8b3 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
820 11c: 9b 38 60 00 sra %g1, 0, %o5 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
821 120: c2 07 a8 bb ld [ %fp + 0x8bb ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
822 124: 83 38 60 00 sra %g1, 0, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
823 128: c2 70 a0 30 stx %g1, [ %g2 + 0x30 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
824 12c: c2 5f a8 bf ldx [ %fp + 0x8bf ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
825 130: c2 70 a0 38 stx %g1, [ %g2 + 0x38 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
826 134: c2 07 a8 c7 ld [ %fp + 0x8c7 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
827 138: c2 20 a0 40 st %g1, [ %g2 + 0x40 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
828 13c: d3 00 a0 40 ld [ %g2 + 0x40 ], %f9 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
829 140: c2 5f a8 cf ldx [ %fp + 0x8cf ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
830 144: c2 70 a0 48 stx %g1, [ %g2 + 0x48 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
831 148: c2 5f a8 d7 ldx [ %fp + 0x8d7 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
832 14c: c2 70 a0 50 stx %g1, [ %g2 + 0x50 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
833 150: d9 18 a0 48 ldd [ %g2 + 0x48 ], %f12 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
834 154: c2 07 a8 e3 ld [ %fp + 0x8e3 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
835 158: 83 38 60 00 sra %g1, 0, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
836 15c: c2 70 a0 58 stx %g1, [ %g2 + 0x58 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
837 160: c2 07 a8 eb ld [ %fp + 0x8eb ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
838 164: 83 38 60 00 sra %g1, 0, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
839 168: c2 70 a0 60 stx %g1, [ %g2 + 0x60 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
840 16c: 90 10 00 03 mov %g3, %o0 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
841 170: 92 10 00 04 mov %g4, %o1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
842 174: 89 a0 00 28 fmovs %f8, %f4 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
843 178: 8d a0 00 4a fmovd %f10, %f6 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
844 17c: 98 10 00 05 mov %g5, %o4 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
845 180: a1 a0 00 29 fmovs %f9, %f16 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
846 184: a5 a0 00 4c fmovd %f12, %f18 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
847 188: 40 00 00 00 call 188 <nonleaf_call+0x130> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
848 18c: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
849 190: 03 00 00 00 sethi %hi(0), %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
850 194: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
851 198: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
852 19c: c6 5f a7 e7 ldx [ %fp + 0x7e7 ], %g3 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
853 1a0: c4 58 40 00 ldx [ %g1 ], %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
854 1a4: 86 18 c0 02 xor %g3, %g2, %g3 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
855 1a8: 84 10 20 00 clr %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
856 1ac: 82 10 00 03 mov %g3, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
857 1b0: 02 c8 40 08 brz %g1, 1d0 <nonleaf_call+0x178> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
858 1b4: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
859 1b8: 03 00 00 00 sethi %hi(0), %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
860 1bc: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
861 1c0: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
862 1c4: 90 10 00 01 mov %g1, %o0 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
863 1c8: 40 00 00 00 call 1c8 <nonleaf_call+0x170> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
864 1cc: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
865 1d0: 81 cf e0 08 rett %i7 + 8 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
866 1d4: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
867 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
868 00000000000001d8 <main>: |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
869 1d8: 9d e3 be c0 save %sp, -320, %sp ; prolog |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
870 1dc: 2f 00 00 00 sethi %hi(0), %l7 ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
871 1e0: ae 05 e0 00 add %l7, 0, %l7 ! 0 <leaf_call> ; | @@@ unsure, call to some code stub adding o7 to l7 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
872 1e4: 7f ff ff 9a call 4c <leaf_call+0x4c> ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
873 1e8: 01 00 00 00 nop ; / |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
874 1ec: 82 10 20 02 mov 2, %g1 ! 2 <leaf_call+0x2> ; \ |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
875 1f0: c2 27 a7 db st %g1, [ %fp + 0x7db ] ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
876 1f4: 82 10 20 03 mov 3, %g1 ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
877 1f8: c2 27 a7 df st %g1, [ %fp + 0x7df ] ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
878 1fc: 03 00 00 00 sethi %hi(0), %g1 ; | put together first local struct A |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
879 200: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
880 204: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
881 208: d1 00 40 00 ld [ %g1 ], %f8 ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
882 20c: d1 27 a7 e3 st %f8, [ %fp + 0x7e3 ] ; / |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
883 210: 03 00 00 00 sethi %hi(0), %g1 ; \ |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
884 214: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
885 218: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
886 21c: d1 18 40 00 ldd [ %g1 ], %f8 ; | put together first local struct B |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
887 220: d1 3f a7 bf std %f8, [ %fp + 0x7bf ] ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
888 224: 82 10 20 06 mov 6, %g1 ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
889 228: c2 77 a7 c7 stx %g1, [ %fp + 0x7c7 ] ; / |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
890 22c: 82 10 20 09 mov 9, %g1 ; \ |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
891 230: c2 27 a7 cf st %g1, [ %fp + 0x7cf ] ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
892 234: 82 10 20 0a mov 0xa, %g1 ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
893 238: c2 27 a7 d3 st %g1, [ %fp + 0x7d3 ] ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
894 23c: 03 00 00 00 sethi %hi(0), %g1 ; | put together second local struct A |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
895 240: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
896 244: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
897 248: d1 00 40 00 ld [ %g1 ], %f8 ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
898 24c: d1 27 a7 d7 st %f8, [ %fp + 0x7d7 ] ; / |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
899 250: 03 00 00 00 sethi %hi(0), %g1 ; \ |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
900 254: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
901 258: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
902 25c: d1 18 40 00 ldd [ %g1 ], %f8 ; | put together second local struct B |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
903 260: d1 3f a7 af std %f8, [ %fp + 0x7af ] ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
904 264: 82 10 20 0d mov 0xd, %g1 ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
905 268: c2 77 a7 b7 stx %g1, [ %fp + 0x7b7 ] ; / |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
906 26c: 84 03 a8 7f add %sp, 0x87f, %g2 ; top of stack addr -> g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
907 270: c2 07 a7 db ld [ %fp + 0x7db ], %g1 ; | | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
908 274: 83 30 60 00 srl %g1, 0, %g1 ; | | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
909 278: 87 28 70 20 sllx %g1, 0x20, %g3 ; | | get first struct A's first 8 bytes (i,j) into g3, with i occupying MSBs |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
910 27c: c2 07 a7 df ld [ %fp + 0x7df ], %g1 ; | prep arg 2 | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
911 280: 83 30 60 00 srl %g1, 0, %g1 ; | | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
912 284: 86 10 40 03 or %g1, %g3, %g3 ; | | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
913 288: d1 07 a7 e3 ld [ %fp + 0x7e3 ], %f8 ; / first struct A's f -> f8 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
914 28c: d5 1f a7 bf ldd [ %fp + 0x7bf ], %f10 ; \ first struct B's d -> f10 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
915 290: c8 5f a7 c7 ldx [ %fp + 0x7c7 ], %g4 ; / prep arg 3 first struct B's l -> g4 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
916 294: 82 10 20 07 mov 7, %g1 ; \ |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
917 298: c2 70 a0 30 stx %g1, [ %g2 + 0x30 ] ; / arg 4, "pushed" onto stack |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
918 29c: 82 10 20 08 mov 8, %g1 ; \ |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
919 2a0: c2 70 a0 38 stx %g1, [ %g2 + 0x38 ] ; / arg 5, "pushed" onto stack |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
920 2a4: c2 5f a7 cf ldx [ %fp + 0x7cf ], %g1 ; \ |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
921 2a8: c2 70 a0 40 stx %g1, [ %g2 + 0x40 ] ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
922 2ac: c2 07 a7 d7 ld [ %fp + 0x7d7 ], %g1 ; | (part of) arg 6's int fields, "pushed" onto stack (second struct A, entirely) |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
923 2b0: c2 20 a0 48 st %g1, [ %g2 + 0x48 ] ; / |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
924 2b4: d9 00 a0 48 ld [ %g2 + 0x48 ], %f12 ; prep (part of) arg 6: second struct A's fp field f -> f12 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
925 2b8: c2 5f a7 af ldx [ %fp + 0x7af ], %g1 ; \ |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
926 2bc: c2 70 a0 50 stx %g1, [ %g2 + 0x50 ] ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
927 2c0: c2 5f a7 b7 ldx [ %fp + 0x7b7 ], %g1 ; | (part of) arg 7, "pushed" onto stack (second struct B, entirely) |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
928 2c4: c2 70 a0 58 stx %g1, [ %g2 + 0x58 ] ; / |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
929 2c8: dd 18 a0 50 ldd [ %g2 + 0x50 ], %f14 ; prep (part of) arg 7: second struct B's d -> d14 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
930 2cc: 82 10 20 0e mov 0xe, %g1 ; \ |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
931 2d0: c2 70 a0 60 stx %g1, [ %g2 + 0x60 ] ; / arg 8, "pushed" onto stack |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
932 2d4: 82 10 20 0f mov 0xf, %g1 ; \ |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
933 2d8: c2 70 a0 68 stx %g1, [ %g2 + 0x68 ] ; / arg 9, "pushed" onto stack |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
934 2dc: 90 10 20 00 clr %o0 ; arg 0 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
935 2e0: 92 10 20 01 mov 1, %o1 ; arg 1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
936 2e4: 94 10 00 03 mov %g3, %o2 ; | (i,j -> int reg) |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
937 2e8: 8d a0 00 28 fmovs %f8, %f6 ; / arg 2 (first struct A) (f -> fp reg, (f{0,2,4} skipped)) |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
938 2ec: 91 a0 00 4a fmovd %f10, %f8 ; \ (d -> fp reg d8) |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
939 2f0: 9a 10 00 04 mov %g4, %o5 ; / arg 3 (first struct B) (l -> int reg, (o{3,4} skipped)) |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
940 2f4: a5 a0 00 2c fmovs %f12, %f18 ; (part of) arg 6 (second struct A) (f -> fp reg, (f[10-16] skipped)) |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
941 2f8: a9 a0 00 4e fmovd %f14, %f20 ; (part of) arg 7 (second struct B) (d -> fp reg d20)) |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
942 2fc: 40 00 00 00 call 2fc <main+0x124> ; call nonleaf_call (objdump not from final link but .o) |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
943 300: 01 00 00 00 nop ; branch delay slot |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
944 304: 82 10 20 00 clr %g1 ! 0 <leaf_call> ; \ |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
945 308: 83 38 60 00 sra %g1, 0, %g1 ; / return value |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
946 30c: b0 10 00 01 mov %g1, %i0 ; \ |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
947 310: 81 cf e0 08 rett %i7 + 8 ; | epilog |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
948 314: 01 00 00 00 nop ; | branch delay slot |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
949 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
950 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
951 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
952 ; ---------- passing structs with mixed 8-byte parts ----------> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
953 ; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
954 ; struct A { int i; float f; }; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
955 ; struct B { float f; char c; }; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
956 ; struct C { float f; short s, t; }; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
957 ; struct D { short s; float f; }; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
958 ; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
959 ; void leaf_call(struct A a, struct B b, struct C c, struct D d) |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
960 ; { |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
961 ; } |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
962 ; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
963 ; int main() |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
964 ; { |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
965 ; leaf_call((struct A){0,1.f}, (struct B){2.f,3}, (struct C){4.f,5,6}, (struct D){7,8.f}); |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
966 ; return 0; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
967 ; } |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
968 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
969 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
970 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
971 ; output from openbsd-6.0-sparc64 w/ gcc 4.2.1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
972 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
973 0000000000000000 <leaf_call>: |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
974 0: 9d e3 bf 30 save %sp, -208, %sp |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
975 4: 82 10 00 18 mov %i0, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
976 8: 91 a0 00 21 fmovs %f1, %f8 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
977 c: 93 a0 00 22 fmovs %f2, %f9 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
978 10: 84 10 00 19 mov %i1, %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
979 14: 95 a0 00 24 fmovs %f4, %f10 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
980 18: 86 10 00 1a mov %i2, %g3 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
981 1c: 88 10 00 1b mov %i3, %g4 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
982 20: 97 a0 00 27 fmovs %f7, %f11 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
983 24: c2 77 a8 7f stx %g1, [ %fp + 0x87f ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
984 28: d1 27 a8 83 st %f8, [ %fp + 0x883 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
985 2c: d3 27 a8 87 st %f9, [ %fp + 0x887 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
986 30: c4 27 a8 8b st %g2, [ %fp + 0x88b ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
987 34: d5 27 a8 8f st %f10, [ %fp + 0x88f ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
988 38: c6 27 a8 93 st %g3, [ %fp + 0x893 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
989 3c: c8 77 a8 97 stx %g4, [ %fp + 0x897 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
990 40: d7 27 a8 9b st %f11, [ %fp + 0x89b ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
991 44: 81 cf e0 08 rett %i7 + 8 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
992 48: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
993 4c: ae 03 c0 17 add %o7, %l7, %l7 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
994 50: 81 c3 e0 08 retl |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
995 54: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
996 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
997 0000000000000058 <main>: |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
998 58: 9d e3 bf 10 save %sp, -240, %sp ; prolog |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
999 5c: 2f 00 00 00 sethi %hi(0), %l7 ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1000 60: ae 05 e0 00 add %l7, 0, %l7 ! 0 <leaf_call> ; | @@@ unsure, call to some code stub adding o7 to l7 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1001 64: 7f ff ff fa call 4c <leaf_call+0x4c> ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1002 68: 01 00 00 00 nop ; / |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1003 6c: c0 27 a7 df clr [ %fp + 0x7df ] ; \ |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1004 70: 03 00 00 00 sethi %hi(0), %g1 ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1005 74: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1006 78: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 ; | put together local struct A |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1007 7c: d1 00 40 00 ld [ %g1 ], %f8 ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1008 80: d1 27 a7 e3 st %f8, [ %fp + 0x7e3 ] ; / |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1009 84: 03 00 00 00 sethi %hi(0), %g1 ; \ |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1010 88: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1011 8c: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1012 90: d1 00 40 00 ld [ %g1 ], %f8 ; | put together local struct B |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1013 94: d1 27 a7 d7 st %f8, [ %fp + 0x7d7 ] ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1014 98: 82 10 20 03 mov 3, %g1 ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1015 9c: c2 2f a7 db stb %g1, [ %fp + 0x7db ] ; / |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1016 a0: 03 00 00 00 sethi %hi(0), %g1 ; \ |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1017 a4: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1018 a8: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1019 ac: d1 00 40 00 ld [ %g1 ], %f8 ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1020 b0: d1 27 a7 cf st %f8, [ %fp + 0x7cf ] ; | put together local struct C |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1021 b4: 82 10 20 05 mov 5, %g1 ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1022 b8: c2 37 a7 d3 sth %g1, [ %fp + 0x7d3 ] ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1023 bc: 82 10 20 06 mov 6, %g1 ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1024 c0: c2 37 a7 d5 sth %g1, [ %fp + 0x7d5 ] ; / |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1025 c4: 82 10 20 07 mov 7, %g1 ; \ |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1026 c8: c2 37 a7 c7 sth %g1, [ %fp + 0x7c7 ] ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1027 cc: 03 00 00 00 sethi %hi(0), %g1 ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1028 d0: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> ; | put together local struct D |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1029 d4: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1030 d8: d1 00 40 00 ld [ %g1 ], %f8 ; | |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1031 dc: d1 27 a7 cb st %f8, [ %fp + 0x7cb ] ; / |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1032 e0: c2 5f a7 df ldx [ %fp + 0x7df ], %g1 ; \ struct A's int -> g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1033 e4: d1 07 a7 e3 ld [ %fp + 0x7e3 ], %f8 ; | struct A's float -> f8 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1034 e8: d3 07 a7 d7 ld [ %fp + 0x7d7 ], %f9 ; | struct B's float -> f9 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1035 ec: c4 07 a7 db ld [ %fp + 0x7db ], %g2 ; | prep args struct B's char -> g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1036 f0: d5 07 a7 cf ld [ %fp + 0x7cf ], %f10 ; | struct C's float -> f10 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1037 f4: c6 07 a7 d3 ld [ %fp + 0x7d3 ], %g3 ; | struct C's shorts (both) -> g3 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1038 f8: c8 5f a7 c7 ldx [ %fp + 0x7c7 ], %g4 ; | struct D's short -> g4 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1039 fc: d7 07 a7 cb ld [ %fp + 0x7cb ], %f11 ; / struct D's float -> f11 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1040 100: 90 10 00 01 mov %g1, %o0 ; arg 0 (int part) |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1041 104: 83 a0 00 28 fmovs %f8, %f1 ; arg 0 (fp part) |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1042 108: 85 a0 00 29 fmovs %f9, %f2 ; arg 1 (fp part) |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1043 10c: 92 10 00 02 mov %g2, %o1 ; arg 1 (int part) |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1044 110: 89 a0 00 2a fmovs %f10, %f4 ; arg 2 (fp part) |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1045 114: 94 10 00 03 mov %g3, %o2 ; arg 2 (int part) |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1046 118: 96 10 00 04 mov %g4, %o3 ; arg 3 (int part) |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1047 11c: 8f a0 00 2b fmovs %f11, %f7 ; arg 3 (fp part) |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1048 120: 40 00 00 00 call 120 <main+0xc8> ; call nonleaf_call (objdump not from final link but .o) |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1049 124: 01 00 00 00 nop ; branch delay slot |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1050 128: 82 10 20 00 clr %g1 ! 0 <leaf_call> ; \ |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1051 12c: 83 38 60 00 sra %g1, 0, %g1 ; / return value |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1052 130: b0 10 00 01 mov %g1, %i0 ; \ |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1053 134: 81 cf e0 08 rett %i7 + 8 ; | epilog |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1054 138: 01 00 00 00 nop ; | branch delay slot |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1055 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1056 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1057 |
475 | 1058 ; ---------- passing structs with only fp parts ----------> |
1059 ; | |
1060 ; struct A { float a; }; | |
1061 ; struct B { float a, b; }; | |
1062 ; struct C { float a, b, c; }; | |
1063 ; struct D { double a; }; | |
1064 ; struct E { double a, b; }; | |
1065 ; struct F { double a, b, c; }; | |
1066 ; | |
1067 ; void leaf_call(struct A a, struct B b, struct C c, struct D d, struct E e, struct F f) | |
1068 ; { | |
1069 ; } | |
1070 ; | |
1071 ; int main() | |
1072 ; { | |
1073 ; leaf_call((struct A){1.f}, (struct B){2.f,3.f}, (struct C){4.f,5.f,6.f}, (struct D){1.}, (struct E){2.,3.}, (struct F){4.,5.,6.}); | |
1074 ; return 0; | |
1075 ; } | |
1076 | |
1077 | |
1078 | |
1079 ; output from openbsd-6.0-sparc64 w/ gcc 4.2.1 | |
1080 | |
1081 0000000000000000 <leaf_call>: | |
1082 0: 9d e3 bf 30 save %sp, -208, %sp | |
1083 4: c1 27 a8 7f st %f0, [ %fp + 0x87f ] | |
1084 8: 9d a0 00 22 fmovs %f2, %f14 | |
1085 c: 9f a0 00 23 fmovs %f3, %f15 | |
1086 10: a1 a0 00 24 fmovs %f4, %f16 | |
1087 14: a3 a0 00 25 fmovs %f5, %f17 | |
1088 18: a5 a0 00 26 fmovs %f6, %f18 | |
1089 1c: d1 3f a8 9f std %f8, [ %fp + 0x89f ] | |
1090 20: 91 a0 00 4a fmovd %f10, %f8 | |
1091 24: 95 a0 00 4c fmovd %f12, %f10 | |
1092 28: d1 3f a8 a7 std %f8, [ %fp + 0x8a7 ] | |
1093 2c: d5 3f a8 af std %f10, [ %fp + 0x8af ] | |
1094 30: dd 27 a8 87 st %f14, [ %fp + 0x887 ] | |
1095 34: df 27 a8 8b st %f15, [ %fp + 0x88b ] | |
1096 38: e1 27 a8 8f st %f16, [ %fp + 0x88f ] | |
1097 3c: e3 27 a8 93 st %f17, [ %fp + 0x893 ] | |
1098 40: e5 27 a8 97 st %f18, [ %fp + 0x897 ] | |
1099 44: 81 cf e0 08 rett %i7 + 8 | |
1100 48: 01 00 00 00 nop | |
1101 4c: ae 03 c0 17 add %o7, %l7, %l7 | |
1102 50: 81 c3 e0 08 retl | |
1103 54: 01 00 00 00 nop | |
1104 | |
1105 0000000000000058 <main>: | |
1106 58: 9d e3 be b0 save %sp, -336, %sp ; prolog | |
1107 5c: 2f 00 00 00 sethi %hi(0), %l7 ; | | |
1108 60: ae 05 e0 00 add %l7, 0, %l7 ! 0 <leaf_call> ; | @@@ unsure, call to some code stub adding o7 to l7 | |
1109 64: 7f ff ff fa call 4c <leaf_call+0x4c> ; | | |
1110 68: 01 00 00 00 nop ; / | |
1111 6c: 03 00 00 00 sethi %hi(0), %g1 ; \ | |
1112 70: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> ; | | |
1113 74: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 ; | put together local struct A | |
1114 78: d1 00 40 00 ld [ %g1 ], %f8 ; | | |
1115 7c: d1 27 a7 e3 st %f8, [ %fp + 0x7e3 ] ; / | |
1116 80: 03 00 00 00 sethi %hi(0), %g1 ; \ | |
1117 84: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> ; | | |
1118 88: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 ; | | |
1119 8c: d1 00 40 00 ld [ %g1 ], %f8 ; | | |
1120 90: d1 27 a7 db st %f8, [ %fp + 0x7db ] ; | | |
1121 94: 03 00 00 00 sethi %hi(0), %g1 ; | put together local struct B | |
1122 98: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> ; | | |
1123 9c: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 ; | | |
1124 a0: d1 00 40 00 ld [ %g1 ], %f8 ; | | |
1125 a4: d1 27 a7 df st %f8, [ %fp + 0x7df ] ; / | |
1126 a8: 03 00 00 00 sethi %hi(0), %g1 ; \ | |
1127 ac: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> ; | | |
1128 b0: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 ; | | |
1129 b4: d1 00 40 00 ld [ %g1 ], %f8 ; | | |
1130 b8: d1 27 a7 c3 st %f8, [ %fp + 0x7c3 ] ; | | |
1131 bc: 03 00 00 00 sethi %hi(0), %g1 ; | | |
1132 c0: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> ; | | |
1133 c4: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 ; | | |
1134 c8: d1 00 40 00 ld [ %g1 ], %f8 ; | put together local struct C | |
1135 cc: d1 27 a7 c7 st %f8, [ %fp + 0x7c7 ] ; | | |
1136 d0: 03 00 00 00 sethi %hi(0), %g1 ; | | |
1137 d4: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> ; | | |
1138 d8: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 ; | | |
1139 dc: d1 00 40 00 ld [ %g1 ], %f8 ; | | |
1140 e0: d1 27 a7 cb st %f8, [ %fp + 0x7cb ] ; / | |
1141 e4: 03 00 00 00 sethi %hi(0), %g1 ; \ | |
1142 e8: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> ; | | |
1143 ec: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 ; | put together local struct D | |
1144 f0: d1 18 40 00 ldd [ %g1 ], %f8 ; | | |
1145 f4: d1 3f a7 cf std %f8, [ %fp + 0x7cf ] ; / | |
1146 f8: 03 00 00 00 sethi %hi(0), %g1 ; \ | |
1147 fc: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> ; | | |
1148 100: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 ; | | |
1149 104: d1 18 40 00 ldd [ %g1 ], %f8 ; | | |
1150 108: d1 3f a7 af std %f8, [ %fp + 0x7af ] ; | | |
1151 10c: 03 00 00 00 sethi %hi(0), %g1 ; | put together local struct E | |
1152 110: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> ; | | |
1153 114: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 ; | | |
1154 118: d1 18 40 00 ldd [ %g1 ], %f8 ; | | |
1155 11c: d1 3f a7 b7 std %f8, [ %fp + 0x7b7 ] ; / | |
1156 120: 03 00 00 00 sethi %hi(0), %g1 ; \ | |
1157 124: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> ; | | |
1158 128: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 ; | | |
1159 12c: d1 18 40 00 ldd [ %g1 ], %f8 ; | | |
1160 130: d1 3f a7 97 std %f8, [ %fp + 0x797 ] ; | | |
1161 134: 03 00 00 00 sethi %hi(0), %g1 ; | | |
1162 138: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> ; | | |
1163 13c: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 ; | | |
1164 140: d1 18 40 00 ldd [ %g1 ], %f8 ; | put together local struct F | |
1165 144: d1 3f a7 9f std %f8, [ %fp + 0x79f ] ; | | |
1166 148: 03 00 00 00 sethi %hi(0), %g1 ; | | |
1167 14c: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> ; | | |
1168 150: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 ; | | |
1169 154: d1 18 40 00 ldd [ %g1 ], %f8 ; | | |
1170 158: d1 3f a7 a7 std %f8, [ %fp + 0x7a7 ] ; / | |
1171 15c: c2 5f a7 97 ldx [ %fp + 0x797 ], %g1 ; \ | |
1172 160: c2 77 a7 6f stx %g1, [ %fp + 0x76f ] ; | | |
1173 164: c2 5f a7 9f ldx [ %fp + 0x79f ], %g1 ; | prep arg 5 (struct F, copied entirely onto stack, as > 16b, to pass indirectly) | |
1174 168: c2 77 a7 77 stx %g1, [ %fp + 0x777 ] ; | | |
1175 16c: c2 5f a7 a7 ldx [ %fp + 0x7a7 ], %g1 ; | | |
1176 170: c2 77 a7 7f stx %g1, [ %fp + 0x77f ] ; / | |
1177 174: d1 07 a7 e3 ld [ %fp + 0x7e3 ], %f8 ; prep arg 0 (struct A) | |
1178 178: d3 07 a7 db ld [ %fp + 0x7db ], %f9 ; \ | |
1179 17c: dd 07 a7 df ld [ %fp + 0x7df ], %f14 ; / prep arg 1 (struct B) | |
1180 180: df 07 a7 c3 ld [ %fp + 0x7c3 ], %f15 ; \ | |
1181 184: e1 07 a7 c7 ld [ %fp + 0x7c7 ], %f16 ; | prep arg 2 (struct C) | |
1182 188: e3 07 a7 cb ld [ %fp + 0x7cb ], %f17 ; / | |
1183 18c: e5 1f a7 cf ldd [ %fp + 0x7cf ], %f18 ; prep arg 3 (struct D) | |
1184 190: 82 07 a7 6f add %fp, 0x76f, %g1 ; \ | |
1185 194: c2 73 a8 b7 stx %g1, [ %sp + 0x8b7 ] ; / arg 5 (struct F, passed indirectly as ptr to copy; via stack as all %o* regs already skipped) | |
1186 198: c2 5f a7 b7 ldx [ %fp + 0x7b7 ], %g1 ; @@@ unsure ... | |
1187 19c: c2 73 a8 af stx %g1, [ %sp + 0x8af ] ; @@@ ... last float of struct E pushed onto stack (maybe register save area? maybe for some iteration facilitation?) | |
1188 1a0: d5 1f a7 af ldd [ %fp + 0x7af ], %f10 ; \ arg 4 (struct E) first double | |
1189 1a4: d9 1f a7 b7 ldd [ %fp + 0x7b7 ], %f12 ; / second double | |
1190 1a8: 81 a0 00 28 fmovs %f8, %f0 ; arg 0 (entire struct A, takes full %d0 slot despite not being 64bit, as only field of struct) | |
1191 1ac: 85 a0 00 29 fmovs %f9, %f2 ; \ arg 1 (struct B) first float | |
1192 1b0: 87 a0 00 2e fmovs %f14, %f3 ; / second float | |
1193 1b4: 89 a0 00 2f fmovs %f15, %f4 ; \ first float | |
1194 1b8: 8b a0 00 30 fmovs %f16, %f5 ; | arg 2 (struct C) second float | |
1195 1bc: 8d a0 00 31 fmovs %f17, %f6 ; / third float | |
1196 1c0: 91 a0 00 52 fmovd %f18, %f8 ; arg 3 (entire struct D, single field double) | |
1197 1c4: 40 00 00 00 call 1c4 <main+0x16c> ; call nonleaf_call (objdump not from final link but .o) | |
1198 1c8: 01 00 00 00 nop ; branch delay slot | |
1199 1cc: 82 10 20 00 clr %g1 ! 0 <leaf_call> ; \ | |
1200 1d0: 83 38 60 00 sra %g1, 0, %g1 ; / return value | |
1201 1d4: b0 10 00 01 mov %g1, %i0 ; \ | |
1202 1d8: 81 cf e0 08 rett %i7 + 8 ; | epilog | |
1203 1dc: 01 00 00 00 nop ; | branch delay slot | |
1204 | |
1205 | |
1206 | |
1207 ; ---------- passing only unions with only fp parts ----------> | |
1208 ; | |
1209 ; union A { float a; }; | |
1210 ; union B { float a, b; }; | |
1211 ; union C { float a, b, c; }; | |
1212 ; union D { double a; }; | |
1213 ; union E { double a, b; }; | |
1214 ; union F { double a, b, c; }; | |
1215 ; | |
1216 ; void leaf_call(union A a, union B b, union C c, union D d, union E e, union F f) | |
1217 ; { | |
1218 ; } | |
1219 ; | |
1220 ; int main() | |
1221 ; { | |
1222 ; leaf_call((union A){1.f}, (union B){2.f,3.f}, (union C){4.f,5.f,6.f}, (union D){1.}, (union E){2.,3.}, (union F){4.,5.,6.}); | |
1223 ; return 0; | |
1224 ; } | |
1225 | |
1226 | |
1227 | |
1228 ; output from openbsd-6.0-sparc64 w/ gcc 4.2.1 | |
1229 | |
1230 0000000000000000 <leaf_call>: | |
1231 0: 9d e3 bf 30 save %sp, -208, %sp | |
1232 4: 84 10 00 18 mov %i0, %g2 | |
1233 8: 86 10 00 19 mov %i1, %g3 | |
1234 c: 88 10 00 1a mov %i2, %g4 | |
1235 10: f6 77 a8 97 stx %i3, [ %fp + 0x897 ] | |
1236 14: f8 77 a8 9f stx %i4, [ %fp + 0x89f ] | |
1237 18: fa 77 a8 a7 stx %i5, [ %fp + 0x8a7 ] | |
1238 1c: 85 38 b0 20 srax %g2, 0x20, %g2 | |
1239 20: c2 07 a8 7f ld [ %fp + 0x87f ], %g1 | |
1240 24: 82 08 60 00 and %g1, 0, %g1 | |
1241 28: 82 10 40 02 or %g1, %g2, %g1 | |
1242 2c: c2 27 a8 7f st %g1, [ %fp + 0x87f ] | |
1243 30: 87 38 f0 20 srax %g3, 0x20, %g3 | |
1244 34: c2 07 a8 87 ld [ %fp + 0x887 ], %g1 | |
1245 38: 82 08 60 00 and %g1, 0, %g1 | |
1246 3c: 82 10 40 03 or %g1, %g3, %g1 | |
1247 40: c2 27 a8 87 st %g1, [ %fp + 0x887 ] | |
1248 44: 89 39 30 20 srax %g4, 0x20, %g4 | |
1249 48: c2 07 a8 8f ld [ %fp + 0x88f ], %g1 | |
1250 4c: 82 08 60 00 and %g1, 0, %g1 | |
1251 50: 82 10 40 04 or %g1, %g4, %g1 | |
1252 54: c2 27 a8 8f st %g1, [ %fp + 0x88f ] | |
1253 58: 81 cf e0 08 rett %i7 + 8 | |
1254 5c: 01 00 00 00 nop | |
1255 60: ae 03 c0 17 add %o7, %l7, %l7 | |
1256 64: 81 c3 e0 08 retl | |
1257 68: 01 00 00 00 nop | |
1258 | |
1259 000000000000006c <main>: | |
1260 6c: 9d e3 bf 10 save %sp, -240, %sp ; prolog | |
1261 70: 2f 00 00 00 sethi %hi(0), %l7 ; | | |
1262 74: ae 05 e0 00 add %l7, 0, %l7 ! 0 <leaf_call> ; | @@@ unsure, call to some code stub adding o7 to l7 | |
1263 78: 7f ff ff fa call 60 <leaf_call+0x60> ; | | |
1264 7c: 01 00 00 00 nop ; / | |
1265 80: 03 00 00 00 sethi %hi(0), %g1 ; \ | |
1266 84: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> ; | | |
1267 88: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 ; | put together local union A | |
1268 8c: d1 00 40 00 ld [ %g1 ], %f8 ; | | |
1269 90: d1 27 a7 e3 st %f8, [ %fp + 0x7e3 ] ; / | |
1270 94: 03 00 00 00 sethi %hi(0), %g1 ; \ | |
1271 98: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> ; | | |
1272 9c: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 ; | put together local union B (only writes one val) | |
1273 a0: d1 00 40 00 ld [ %g1 ], %f8 ; | | |
1274 a4: d1 27 a7 df st %f8, [ %fp + 0x7df ] ; / | |
1275 a8: 03 00 00 00 sethi %hi(0), %g1 ; \ | |
1276 ac: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> ; | | |
1277 b0: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 ; | put together local union C (only writes one val) | |
1278 b4: d1 00 40 00 ld [ %g1 ], %f8 ; | | |
1279 b8: d1 27 a7 db st %f8, [ %fp + 0x7db ] ; / | |
1280 bc: 03 00 00 00 sethi %hi(0), %g1 ; \ | |
1281 c0: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> ; | | |
1282 c4: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 ; | put together local union D | |
1283 c8: d1 18 40 00 ldd [ %g1 ], %f8 ; | | |
1284 cc: d1 3f a7 cf std %f8, [ %fp + 0x7cf ] ; / | |
1285 d0: 03 00 00 00 sethi %hi(0), %g1 ; \ | |
1286 d4: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> ; | | |
1287 d8: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 ; | put together local union A (only writes one val) | |
1288 dc: d1 18 40 00 ldd [ %g1 ], %f8 ; | | |
1289 e0: d1 3f a7 c7 std %f8, [ %fp + 0x7c7 ] ; / | |
1290 e4: 03 00 00 00 sethi %hi(0), %g1 ; \ | |
1291 e8: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> ; | | |
1292 ec: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 ; | put together local union A (only writes one val) | |
1293 f0: d1 18 40 00 ldd [ %g1 ], %f8 ; | | |
1294 f4: d1 3f a7 bf std %f8, [ %fp + 0x7bf ] ; / | |
1295 f8: c2 07 a7 e3 ld [ %fp + 0x7e3 ], %g1 ; \ | |
1296 fc: 87 30 60 00 srl %g1, 0, %g3 ; | prep arg 0 | |
1297 100: 87 28 f0 20 sllx %g3, 0x20, %g3 ; / left-justify | |
1298 104: c2 5f a7 df ldx [ %fp + 0x7df ], %g1 ; \ | |
1299 108: 85 30 70 20 srlx %g1, 0x20, %g2 ; | prep arg 1 | |
1300 10c: 85 28 b0 20 sllx %g2, 0x20, %g2 ; / | |
1301 110: c2 07 a7 db ld [ %fp + 0x7db ], %g1 ; \ | |
1302 114: 83 30 60 00 srl %g1, 0, %g1 ; | prep arg 2 | |
1303 118: 83 28 70 20 sllx %g1, 0x20, %g1 ; / | |
1304 11c: c8 5f a7 cf ldx [ %fp + 0x7cf ], %g4 ; prep arg 3 | a bit pointless, could be written | |
1305 120: ca 5f a7 c7 ldx [ %fp + 0x7c7 ], %g5 ; prep arg 4 | directly to %o3 and %o4 | |
1306 124: da 5f a7 bf ldx [ %fp + 0x7bf ], %o5 ; arg 5 | |
1307 128: 90 10 00 03 mov %g3, %o0 ; arg 0 | | |
1308 12c: 92 10 00 02 mov %g2, %o1 ; arg 1 | note: all left-justified | |
1309 130: 94 10 00 01 mov %g1, %o2 ; arg 2 | | |
1310 134: 96 10 00 04 mov %g4, %o3 ; arg 3 | |
1311 138: 98 10 00 05 mov %g5, %o4 ; arg 4 | |
1312 13c: 40 00 00 00 call 13c <main+0xd0> ; call nonleaf_call (objdump not from final link but .o) | |
1313 140: 01 00 00 00 nop ; branch delay slot | |
1314 144: 82 10 20 00 clr %g1 ! 0 <leaf_call> ; \ | |
1315 148: 83 38 60 00 sra %g1, 0, %g1 ; / return value | |
1316 14c: b0 10 00 01 mov %g1, %i0 ; \ | |
1317 150: 81 cf e0 08 rett %i7 + 8 ; | epilog | |
1318 154: 01 00 00 00 nop ; | branch delay slot | |
1319 | |
1320 | |
1321 | |
474
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1322 ; ---------- returning structs by value ----------> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1323 ; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1324 ; struct Small { char x; }; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1325 ; struct Big { long long i,j,k,l; long m; }; /* bigger than 32b */ |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1326 ; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1327 ; struct Small f0() |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1328 ; { |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1329 ; struct Small s = { 132 }; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1330 ; return s; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1331 ; } |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1332 ; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1333 ; struct Big f1() |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1334 ; { |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1335 ; struct Big b = { 7171LL, 99LL, -99LL, -3102LL, 32 }; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1336 ; return b; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1337 ; } |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1338 ; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1339 ; int main() |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1340 ; { |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1341 ; struct Small s = f0(); |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1342 ; struct Big b = f1(); |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1343 ; return b.j + b.k + b.m + s.x; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1344 ; } |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1345 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1346 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1347 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1348 ; output from openbsd-6.0-sparc64 w/ gcc 4.2.1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1349 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1350 0000000000000000 <f0>: |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1351 0: 9d e3 bf 30 save %sp, -208, %sp |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1352 4: 82 10 3f 84 mov -124, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1353 8: c2 2f a7 e6 stb %g1, [ %fp + 0x7e6 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1354 c: c2 0f a7 e6 ldub [ %fp + 0x7e6 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1355 10: 82 08 60 ff and %g1, 0xff, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1356 14: 83 28 70 38 sllx %g1, 0x38, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1357 18: b0 10 00 01 mov %g1, %i0 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1358 1c: 81 cf e0 08 rett %i7 + 8 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1359 20: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1360 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1361 0000000000000024 <f1>: |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1362 24: 9d e3 bf 10 save %sp, -240, %sp |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1363 28: 84 10 00 18 mov %i0, %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1364 2c: 03 00 1c 03 sethi %hi(0x700c00), %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1365 30: 83 30 70 0a srlx %g1, 0xa, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1366 34: c2 77 a7 bf stx %g1, [ %fp + 0x7bf ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1367 38: 82 10 20 63 mov 0x63, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1368 3c: c2 77 a7 c7 stx %g1, [ %fp + 0x7c7 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1369 40: 82 10 3f 9d mov -99, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1370 44: c2 77 a7 cf stx %g1, [ %fp + 0x7cf ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1371 48: 82 10 33 e2 mov -3102, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1372 4c: c2 77 a7 d7 stx %g1, [ %fp + 0x7d7 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1373 50: 82 10 20 20 mov 0x20, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1374 54: c2 77 a7 df stx %g1, [ %fp + 0x7df ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1375 58: c2 5f a7 bf ldx [ %fp + 0x7bf ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1376 5c: c2 70 80 00 stx %g1, [ %g2 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1377 60: c2 5f a7 c7 ldx [ %fp + 0x7c7 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1378 64: c2 70 a0 08 stx %g1, [ %g2 + 8 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1379 68: c2 5f a7 cf ldx [ %fp + 0x7cf ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1380 6c: c2 70 a0 10 stx %g1, [ %g2 + 0x10 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1381 70: c2 5f a7 d7 ldx [ %fp + 0x7d7 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1382 74: c2 70 a0 18 stx %g1, [ %g2 + 0x18 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1383 78: c2 5f a7 df ldx [ %fp + 0x7df ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1384 7c: c2 70 a0 20 stx %g1, [ %g2 + 0x20 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1385 80: b0 10 00 02 mov %g2, %i0 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1386 84: 81 cf e0 08 rett %i7 + 8 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1387 88: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1388 8c: ae 03 c0 17 add %o7, %l7, %l7 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1389 90: 81 c3 e0 08 retl |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1390 94: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1391 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1392 0000000000000098 <main>: |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1393 98: 9d e3 be f0 save %sp, -272, %sp |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1394 9c: 2f 00 00 00 sethi %hi(0), %l7 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1395 a0: ae 05 e0 00 add %l7, 0, %l7 ! 0 <f0> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1396 a4: 7f ff ff fa call 8c <f1+0x68> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1397 a8: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1398 ac: 03 00 00 00 sethi %hi(0), %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1399 b0: 82 10 60 00 mov %g1, %g1 ! 0 <f0> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1400 b4: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1401 b8: c4 58 40 00 ldx [ %g1 ], %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1402 bc: c4 77 a7 e7 stx %g2, [ %fp + 0x7e7 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1403 c0: 84 10 20 00 clr %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1404 c4: 40 00 00 00 call c4 <main+0x2c> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1405 c8: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1406 cc: 84 10 00 08 mov %o0, %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1407 d0: c0 2f a7 ae clrb [ %fp + 0x7ae ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1408 d4: 85 38 b0 38 srax %g2, 0x38, %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1409 d8: c6 0f a7 ae ldub [ %fp + 0x7ae ], %g3 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1410 dc: 82 08 e0 00 and %g3, 0, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1411 e0: 86 10 00 01 mov %g1, %g3 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1412 e4: 82 10 00 02 mov %g2, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1413 e8: 82 10 c0 01 or %g3, %g1, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1414 ec: c2 2f a7 ae stb %g1, [ %fp + 0x7ae ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1415 f0: c2 0f a7 ae ldub [ %fp + 0x7ae ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1416 f4: c2 2f a7 e6 stb %g1, [ %fp + 0x7e6 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1417 f8: 82 07 a7 b7 add %fp, 0x7b7, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1418 fc: 90 10 00 01 mov %g1, %o0 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1419 100: 40 00 00 00 call 100 <main+0x68> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1420 104: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1421 108: c2 5f a7 bf ldx [ %fp + 0x7bf ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1422 10c: 84 10 00 01 mov %g1, %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1423 110: c2 5f a7 c7 ldx [ %fp + 0x7c7 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1424 114: 84 00 80 01 add %g2, %g1, %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1425 118: c2 5f a7 d7 ldx [ %fp + 0x7d7 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1426 11c: 84 00 80 01 add %g2, %g1, %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1427 120: c2 0f a7 e6 ldub [ %fp + 0x7e6 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1428 124: 83 28 60 18 sll %g1, 0x18, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1429 128: 83 38 60 18 sra %g1, 0x18, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1430 12c: 82 00 80 01 add %g2, %g1, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1431 130: 83 38 60 00 sra %g1, 0, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1432 134: b0 10 00 01 mov %g1, %i0 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1433 138: 03 00 00 00 sethi %hi(0), %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1434 13c: 82 10 60 00 mov %g1, %g1 ! 0 <f0> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1435 140: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1436 144: c4 5f a7 e7 ldx [ %fp + 0x7e7 ], %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1437 148: c6 58 40 00 ldx [ %g1 ], %g3 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1438 14c: 84 18 80 03 xor %g2, %g3, %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1439 150: 86 10 20 00 clr %g3 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1440 154: 82 10 00 02 mov %g2, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1441 158: 02 c8 40 08 brz %g1, 178 <main+0xe0> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1442 15c: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1443 160: 03 00 00 00 sethi %hi(0), %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1444 164: 82 10 60 00 mov %g1, %g1 ! 0 <f0> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1445 168: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1446 16c: 90 10 00 01 mov %g1, %o0 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1447 170: 40 00 00 00 call 170 <main+0xd8> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1448 174: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1449 178: 81 cf e0 08 rett %i7 + 8 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1450 17c: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1451 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1452 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1453 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1454 ; ---------- single-field structs by values (and small array fields) ----------> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1455 ; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1456 ; struct C { char c; }; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1457 ; struct S { short s; }; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1458 ; struct I { int i; }; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1459 ; struct F { float f; }; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1460 ; struct D { double d; }; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1461 ; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1462 ; struct C2 { char c[2]; }; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1463 ; struct C3 { char c[3]; }; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1464 ; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1465 ; void leaf_call(struct C2 a, struct C b, struct S c, struct I d, struct F e, struct D f, struct C3 g) |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1466 ; { |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1467 ; } |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1468 ; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1469 ; int main() |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1470 ; { |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1471 ; 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}}); |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1472 ; return 0; |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1473 ; } |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1474 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1475 |
476
c73c59c8b553
- sparc32 doc clarifications w/ respect to aggregate passing and returning
Tassilo Philipp
parents:
475
diff
changeset
|
1476 |
474
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1477 ; output from openbsd-6.0-sparc64 w/ gcc 4.2.1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1478 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1479 0000000000000000 <leaf_call>: |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1480 0: 9d e3 bf 30 save %sp, -208, %sp |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1481 4: 82 10 00 18 mov %i0, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1482 8: 86 10 00 19 mov %i1, %g3 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1483 c: 8a 10 00 1a mov %i2, %g5 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1484 10: ba 10 00 1b mov %i3, %i5 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1485 14: d1 27 a8 9f st %f8, [ %fp + 0x89f ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1486 18: d5 3f a8 a7 std %f10, [ %fp + 0x8a7 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1487 1c: 83 38 70 30 srax %g1, 0x30, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1488 20: 89 28 70 30 sllx %g1, 0x30, %g4 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1489 24: c4 5f a8 7f ldx [ %fp + 0x87f ], %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1490 28: 82 10 3f ff mov -1, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1491 2c: 83 30 70 10 srlx %g1, 0x10, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1492 30: 82 08 80 01 and %g2, %g1, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1493 34: 82 10 40 04 or %g1, %g4, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1494 38: c2 77 a8 7f stx %g1, [ %fp + 0x87f ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1495 3c: 87 38 f0 38 srax %g3, 0x38, %g3 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1496 40: c2 0f a8 87 ldub [ %fp + 0x887 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1497 44: 82 08 60 00 and %g1, 0, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1498 48: 84 10 00 01 mov %g1, %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1499 4c: 82 10 00 03 mov %g3, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1500 50: 82 10 80 01 or %g2, %g1, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1501 54: c2 2f a8 87 stb %g1, [ %fp + 0x887 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1502 58: 8b 39 70 30 srax %g5, 0x30, %g5 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1503 5c: c2 17 a8 8f lduh [ %fp + 0x88f ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1504 60: 82 08 60 00 and %g1, 0, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1505 64: 84 10 00 01 mov %g1, %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1506 68: 82 10 00 05 mov %g5, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1507 6c: 82 10 80 01 or %g2, %g1, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1508 70: c2 37 a8 8f sth %g1, [ %fp + 0x88f ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1509 74: bb 3f 70 20 srax %i5, 0x20, %i5 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1510 78: c2 07 a8 97 ld [ %fp + 0x897 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1511 7c: 82 08 60 00 and %g1, 0, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1512 80: 82 10 40 1d or %g1, %i5, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1513 84: c2 27 a8 97 st %g1, [ %fp + 0x897 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1514 88: 81 cf e0 08 rett %i7 + 8 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1515 8c: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1516 90: ae 03 c0 17 add %o7, %l7, %l7 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1517 94: 81 c3 e0 08 retl |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1518 98: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1519 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1520 000000000000009c <main>: |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1521 9c: 9d e3 bf 00 save %sp, -256, %sp |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1522 a0: 2f 00 00 00 sethi %hi(0), %l7 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1523 a4: ae 05 e0 00 add %l7, 0, %l7 ! 0 <leaf_call> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1524 a8: 7f ff ff fa call 90 <leaf_call+0x90> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1525 ac: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1526 b0: 03 00 00 00 sethi %hi(0), %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1527 b4: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1528 b8: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1529 bc: c4 58 40 00 ldx [ %g1 ], %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1530 c0: c4 77 a7 e7 stx %g2, [ %fp + 0x7e7 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1531 c4: 84 10 20 00 clr %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1532 c8: c0 2f a7 e4 clrb [ %fp + 0x7e4 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1533 cc: 82 10 20 01 mov 1, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1534 d0: c2 2f a7 e5 stb %g1, [ %fp + 0x7e5 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1535 d4: 82 10 20 02 mov 2, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1536 d8: c2 2f a7 e6 stb %g1, [ %fp + 0x7e6 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1537 dc: 82 10 20 03 mov 3, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1538 e0: c2 37 a7 e1 sth %g1, [ %fp + 0x7e1 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1539 e4: 82 10 20 04 mov 4, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1540 e8: c2 27 a7 d7 st %g1, [ %fp + 0x7d7 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1541 ec: 03 00 00 00 sethi %hi(0), %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1542 f0: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1543 f4: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1544 f8: d1 00 40 00 ld [ %g1 ], %f8 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1545 fc: d1 27 a7 d3 st %f8, [ %fp + 0x7d3 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1546 100: 03 00 00 00 sethi %hi(0), %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1547 104: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1548 108: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1549 10c: d1 18 40 00 ldd [ %g1 ], %f8 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1550 110: d1 3f a7 c7 std %f8, [ %fp + 0x7c7 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1551 114: 82 10 20 07 mov 7, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1552 118: c2 2f a7 de stb %g1, [ %fp + 0x7de ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1553 11c: 82 10 20 08 mov 8, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1554 120: c2 2f a7 df stb %g1, [ %fp + 0x7df ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1555 124: 82 10 20 09 mov 9, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1556 128: c2 2f a7 e0 stb %g1, [ %fp + 0x7e0 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1557 12c: c2 0f a7 e4 ldub [ %fp + 0x7e4 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1558 130: 82 08 60 ff and %g1, 0xff, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1559 134: 85 28 70 08 sllx %g1, 8, %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1560 138: c2 0f a7 e5 ldub [ %fp + 0x7e5 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1561 13c: 82 08 60 ff and %g1, 0xff, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1562 140: 86 10 40 02 or %g1, %g2, %g3 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1563 144: 87 28 f0 30 sllx %g3, 0x30, %g3 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1564 148: c2 0f a7 e6 ldub [ %fp + 0x7e6 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1565 14c: 88 08 60 ff and %g1, 0xff, %g4 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1566 150: 89 29 30 38 sllx %g4, 0x38, %g4 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1567 154: c2 17 a7 e1 lduh [ %fp + 0x7e1 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1568 158: 83 28 70 30 sllx %g1, 0x30, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1569 15c: 8b 30 70 30 srlx %g1, 0x30, %g5 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1570 160: 8b 29 70 30 sllx %g5, 0x30, %g5 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1571 164: c2 5f a7 d7 ldx [ %fp + 0x7d7 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1572 168: 85 30 70 20 srlx %g1, 0x20, %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1573 16c: 85 28 b0 20 sllx %g2, 0x20, %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1574 170: d1 07 a7 d3 ld [ %fp + 0x7d3 ], %f8 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1575 174: d5 1f a7 c7 ldd [ %fp + 0x7c7 ], %f10 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1576 178: c2 0f a7 de ldub [ %fp + 0x7de ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1577 17c: c2 2b a8 af stb %g1, [ %sp + 0x8af ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1578 180: c2 0f a7 df ldub [ %fp + 0x7df ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1579 184: c2 2b a8 b0 stb %g1, [ %sp + 0x8b0 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1580 188: c2 0f a7 e0 ldub [ %fp + 0x7e0 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1581 18c: c2 2b a8 b1 stb %g1, [ %sp + 0x8b1 ] |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1582 190: 90 10 00 03 mov %g3, %o0 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1583 194: 92 10 00 04 mov %g4, %o1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1584 198: 94 10 00 05 mov %g5, %o2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1585 19c: 96 10 00 02 mov %g2, %o3 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1586 1a0: 40 00 00 00 call 1a0 <main+0x104> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1587 1a4: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1588 1a8: 82 10 20 00 clr %g1 ! 0 <leaf_call> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1589 1ac: 83 38 60 00 sra %g1, 0, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1590 1b0: b0 10 00 01 mov %g1, %i0 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1591 1b4: 03 00 00 00 sethi %hi(0), %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1592 1b8: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1593 1bc: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1594 1c0: c6 5f a7 e7 ldx [ %fp + 0x7e7 ], %g3 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1595 1c4: c4 58 40 00 ldx [ %g1 ], %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1596 1c8: 86 18 c0 02 xor %g3, %g2, %g3 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1597 1cc: 84 10 20 00 clr %g2 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1598 1d0: 82 10 00 03 mov %g3, %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1599 1d4: 02 c8 40 08 brz %g1, 1f4 <main+0x158> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1600 1d8: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1601 1dc: 03 00 00 00 sethi %hi(0), %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1602 1e0: 82 10 60 00 mov %g1, %g1 ! 0 <leaf_call> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1603 1e4: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1604 1e8: 90 10 00 01 mov %g1, %o0 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1605 1ec: 40 00 00 00 call 1ec <main+0x150> |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1606 1f0: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1607 1f4: 81 cf e0 08 rett %i7 + 8 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1608 1f8: 01 00 00 00 nop |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1609 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1610 |
c9e19249ecd3
- doc: sparc64 disas examples and doc additions regarding aggregates
Tassilo Philipp
parents:
331
diff
changeset
|
1611 |
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:
476
diff
changeset
|
1612 ; ---------- 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:
476
diff
changeset
|
1613 ; |
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:
476
diff
changeset
|
1614 ; 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:
476
diff
changeset
|
1615 ; 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:
476
diff
changeset
|
1616 ; |
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:
476
diff
changeset
|
1617 ; 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:
476
diff
changeset
|
1618 ; |
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:
476
diff
changeset
|
1619 ; 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:
476
diff
changeset
|
1620 ; 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:
476
diff
changeset
|
1621 ; |
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:
476
diff
changeset
|
1622 ; 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:
476
diff
changeset
|
1623 ; { |
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:
476
diff
changeset
|
1624 ; 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:
476
diff
changeset
|
1625 ; 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:
476
diff
changeset
|
1626 ; 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:
476
diff
changeset
|
1627 ; 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:
476
diff
changeset
|
1628 ; 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:
476
diff
changeset
|
1629 ; 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:
476
diff
changeset
|
1630 ; 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:
476
diff
changeset
|
1631 ; 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:
476
diff
changeset
|
1632 ; } |
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:
476
diff
changeset
|
1633 ; } |
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:
476
diff
changeset
|
1634 |
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:
476
diff
changeset
|
1635 |
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:
476
diff
changeset
|
1636 |
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:
476
diff
changeset
|
1637 ; output from openbsd-6.0-sparc64 w/ gcc 4.2.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:
476
diff
changeset
|
1638 |
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:
476
diff
changeset
|
1639 0000000000000d20 <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:
476
diff
changeset
|
1640 d20: 9d e3 bf 30 save %sp, -208, %sp |
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:
476
diff
changeset
|
1641 d24: 82 10 00 18 mov %i0, %g1 |
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:
476
diff
changeset
|
1642 d28: 83 38 70 20 srax %g1, 0x20, %g1 |
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:
476
diff
changeset
|
1643 d2c: c4 07 a8 7f ld [ %fp + 0x87f ], %g2 |
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:
476
diff
changeset
|
1644 d30: 84 08 a0 00 and %g2, 0, %g2 |
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:
476
diff
changeset
|
1645 d34: 82 10 80 01 or %g2, %g1, %g1 |
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:
476
diff
changeset
|
1646 d38: c2 27 a8 7f st %g1, [ %fp + 0x87f ] |
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:
476
diff
changeset
|
1647 d3c: 81 cf e0 08 rett %i7 + 8 |
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:
476
diff
changeset
|
1648 d40: 01 00 00 00 nop |
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:
476
diff
changeset
|
1649 |
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:
476
diff
changeset
|
1650 0000000000000d44 <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:
476
diff
changeset
|
1651 d44: 9d e3 bf 30 save %sp, -208, %sp |
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:
476
diff
changeset
|
1652 d48: f0 77 a8 7f stx %i0, [ %fp + 0x87f ] |
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:
476
diff
changeset
|
1653 d4c: 81 cf e0 08 rett %i7 + 8 |
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:
476
diff
changeset
|
1654 d50: 01 00 00 00 nop |
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:
476
diff
changeset
|
1655 d54: ae 03 c0 17 add %o7, %l7, %l7 |
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:
476
diff
changeset
|
1656 d58: 81 c3 e0 08 retl |
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:
476
diff
changeset
|
1657 d5c: 01 00 00 00 nop |
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:
476
diff
changeset
|
1658 |
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:
476
diff
changeset
|
1659 0000000000000d60 <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:
476
diff
changeset
|
1660 d60: 9d e3 bf 20 save %sp, -224, %sp ; |
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:
476
diff
changeset
|
1661 d64: 2f 00 0c 00 sethi %hi(0x300000), %l7 ; |
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:
476
diff
changeset
|
1662 d68: ae 05 e2 ac add %l7, 0x2ac, %l7 ; |
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:
476
diff
changeset
|
1663 d6c: 7f ff ff fa call d54 <f2+0x10> ; |
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:
476
diff
changeset
|
1664 d70: 01 00 00 00 nop ; |
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:
476
diff
changeset
|
1665 d74: 03 00 00 00 sethi %hi(0), %g1 ; |
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:
476
diff
changeset
|
1666 d78: 82 10 60 48 or %g1, 0x48, %g1 ; |
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:
476
diff
changeset
|
1667 d7c: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 ; |
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:
476
diff
changeset
|
1668 d80: c4 58 40 00 ldx [ %g1 ], %g2 ; |
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:
476
diff
changeset
|
1669 d84: c4 77 a7 e7 stx %g2, [ %fp + 0x7e7 ] ; |
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:
476
diff
changeset
|
1670 d88: 84 10 20 00 clr %g2 ; |
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:
476
diff
changeset
|
1671 d8c: 82 07 a7 df add %fp, 0x7df, %g1 ; |
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:
476
diff
changeset
|
1672 d90: 90 10 00 01 mov %g1, %o0 ; |
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:
476
diff
changeset
|
1673 d94: 40 14 01 13 call 5011e0 <_ZN10NonTrivialC1Ev@plt> ; 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:
476
diff
changeset
|
1674 d98: 01 00 00 00 nop ; |
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:
476
diff
changeset
|
1675 d9c: 82 10 20 01 mov 1, %g1 ; |
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:
476
diff
changeset
|
1676 da0: c2 27 a7 db st %g1, [ %fp + 0x7db ] ; |
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:
476
diff
changeset
|
1677 da4: c2 07 a7 db ld [ %fp + 0x7db ], %g1 ; |
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:
476
diff
changeset
|
1678 da8: 82 00 60 7b add %g1, 0x7b, %g1 ; |
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:
476
diff
changeset
|
1679 dac: c2 27 a7 db st %g1, [ %fp + 0x7db ] ; |
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:
476
diff
changeset
|
1680 db0: c2 07 a7 e3 ld [ %fp + 0x7e3 ], %g1 ; |
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:
476
diff
changeset
|
1681 db4: 83 30 60 00 srl %g1, 0, %g1 ; |
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:
476
diff
changeset
|
1682 db8: 83 28 70 20 sllx %g1, 0x20, %g1 ; |
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:
476
diff
changeset
|
1683 dbc: 90 10 00 01 mov %g1, %o0 ; |
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:
476
diff
changeset
|
1684 dc0: 40 14 01 30 call 501280 <f1@plt> ; 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:
476
diff
changeset
|
1685 dc4: 01 00 00 00 nop ; |
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:
476
diff
changeset
|
1686 dc8: c2 07 a7 db ld [ %fp + 0x7db ], %g1 ; |
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:
476
diff
changeset
|
1687 dcc: 82 00 7f 85 add %g1, -123, %g1 ; |
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:
476
diff
changeset
|
1688 dd0: c2 27 a7 db st %g1, [ %fp + 0x7db ] ; |
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:
476
diff
changeset
|
1689 dd4: 82 07 a7 d7 add %fp, 0x7d7, %g1 ; |
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:
476
diff
changeset
|
1690 dd8: 84 07 a7 df add %fp, 0x7df, %g2 ; |
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:
476
diff
changeset
|
1691 ddc: 90 10 00 01 mov %g1, %o0 ; | 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:
476
diff
changeset
|
1692 de0: 92 10 00 02 mov %g2, %o1 ; | 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:
476
diff
changeset
|
1693 de4: 40 14 00 e7 call 501180 <_ZN10NonTrivialC1ERKS_@plt> ; | 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:
476
diff
changeset
|
1694 de8: 01 00 00 00 nop ; |
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:
476
diff
changeset
|
1695 dec: 82 07 a7 d7 add %fp, 0x7d7, %g1 ; | |
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:
476
diff
changeset
|
1696 df0: 90 10 00 01 mov %g1, %o0 ; | 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:
476
diff
changeset
|
1697 df4: 40 14 01 03 call 501200 <f2@plt> ; 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:
476
diff
changeset
|
1698 df8: 01 00 00 00 nop ; |
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:
476
diff
changeset
|
1699 dfc: c2 07 a7 db ld [ %fp + 0x7db ], %g1 ; |
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:
476
diff
changeset
|
1700 e00: 82 00 7f f4 add %g1, -12, %g1 ; |
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:
476
diff
changeset
|
1701 e04: c2 27 a7 db st %g1, [ %fp + 0x7db ] ; |
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:
476
diff
changeset
|
1702 e08: 03 00 00 00 sethi %hi(0), %g1 ; |
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:
476
diff
changeset
|
1703 e0c: 82 10 60 48 or %g1, 0x48, %g1 ; |
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:
476
diff
changeset
|
1704 e10: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 ; |
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:
476
diff
changeset
|
1705 e14: c6 5f a7 e7 ldx [ %fp + 0x7e7 ], %g3 ; |
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:
476
diff
changeset
|
1706 e18: c4 58 40 00 ldx [ %g1 ], %g2 ; |
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:
476
diff
changeset
|
1707 e1c: 86 18 c0 02 xor %g3, %g2, %g3 ; |
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:
476
diff
changeset
|
1708 e20: 84 10 20 00 clr %g2 ; |
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:
476
diff
changeset
|
1709 e24: 82 10 00 03 mov %g3, %g1 ; |
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:
476
diff
changeset
|
1710 e28: 02 c8 40 08 brz %g1, e48 <f+0xe8> ; |
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:
476
diff
changeset
|
1711 e2c: 01 00 00 00 nop ; |
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:
476
diff
changeset
|
1712 e30: 03 00 00 00 sethi %hi(0), %g1 ; |
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:
476
diff
changeset
|
1713 e34: 82 10 60 40 or %g1, 0x40, %g1 ; |
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:
476
diff
changeset
|
1714 e38: c2 5d c0 01 ldx [ %l7 + %g1 ], %g1 ; |
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:
476
diff
changeset
|
1715 e3c: 90 10 00 01 mov %g1, %o0 ; |
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:
476
diff
changeset
|
1716 e40: 40 14 00 d8 call 5011a0 <__stack_smash_handler@plt> ; |
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:
476
diff
changeset
|
1717 e44: 01 00 00 00 nop ; |
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:
476
diff
changeset
|
1718 e48: 81 cf e0 08 rett %i7 + 8 ; |
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:
476
diff
changeset
|
1719 e4c: 01 00 00 00 nop ; |
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:
476
diff
changeset
|
1720 |
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:
476
diff
changeset
|
1721 ; ... 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:
476
diff
changeset
|
1722 |
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:
476
diff
changeset
|
1723 |
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:
476
diff
changeset
|
1724 |
327
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
1725 ; vim: ft=asm |
c0390dc85a07
- doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff
changeset
|
1726 |