annotate doc/disas_examples/mips.eabi.disas @ 529:fe694c7677b4

- mips eabi doc disas examples
author Tassilo Philipp
date Thu, 14 Apr 2022 21:18:02 +0200
parents 06c9adae114d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
327
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
1 ; #include <stdlib.h>
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
2 ;
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
3 ; void leaf_call(int b, int c, int d, int e, int f, int g, int h)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
4 ; {
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
5 ; }
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
6 ;
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
7 ; void nonleaf_call(int a, int b, int c, int d, int e, int f, int g, int h)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
8 ; {
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
9 ; /* use some local data */
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
10 ; *(char*)alloca(220) = 'L';
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
11 ; leaf_call(b, c, d, e, f, g, h);
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
12 ; }
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
13 ;
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
14 ; int main()
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
15 ; {
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
16 ; nonleaf_call(0, 1, 2, 3, 4, 5, 6, 7);
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
17 ; return 0;
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
18 ; }
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
19
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
20
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
21
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
22 ; output from psptoolchain-20111215-psp w/ gcc 4.9.3
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
23
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
24 00000000 <leaf_call>:
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
25 0: 27bdffd8 addiu sp,sp,-40
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
26 4: afbe0024 sw s8,36(sp)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
27 8: 03a0f021 move s8,sp
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
28 c: afc40000 sw a0,0(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
29 10: afc50004 sw a1,4(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
30 14: afc60008 sw a2,8(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
31 18: afc7000c sw a3,12(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
32 1c: afc80010 sw t0,16(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
33 20: afc90014 sw t1,20(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
34 24: afca0018 sw t2,24(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
35 28: 03c0e821 move sp,s8
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
36 2c: 8fbe0024 lw s8,36(sp)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
37 30: 27bd0028 addiu sp,sp,40
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
38 34: 03e00008 jr ra
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
39 38: 00000000 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 0000003c <nonleaf_call>:
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
42 3c: 27bdffd8 addiu sp,sp,-40 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
43 40: afbf0024 sw ra,36(sp) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
44 44: afbe0020 sw s8,32(sp) ; | prolog
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
45 48: 03a0f021 move s8,sp ; / frame pointer (note: with offset to frame start, but static compared to sp)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
46 4c: afc40000 sw a0,0(s8) ; \
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
47 50: afc50004 sw a1,4(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
48 54: afc60008 sw a2,8(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
49 58: afc7000c sw a3,12(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
50 5c: afc80010 sw t0,16(s8) ; | in args 0,1,2,3,4,5,6,7 -> temp space in local area
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
51 60: afc90014 sw t1,20(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
52 64: afca0018 sw t2,24(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
53 68: afcb001c sw t3,28(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
54 6c: 27bdff18 addiu sp,sp,-232 ; alloca(220) - with padding to guarantee alignment
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
55 70: 03a01021 move v0,sp ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
56 74: 24420007 addiu v0,v0,7 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
57 78: 000210c2 srl v0,v0,0x3 ; | start of alloca()'d memory -> v1, by ...
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
58 7c: 000210c0 sll v0,v0,0x3 ; | ... using v0 as helper to align to 8b
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
59 80: 00401821 move v1,v0 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
60 84: 2402004c li v0,76 ; 'L' -> v0, and...
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
61 88: a0620000 sb v0,0(v1) ; ... store in local area (of alloca()'d space)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
62 8c: 8fc40004 lw a0,4(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
63 90: 8fc50008 lw a1,8(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
64 94: 8fc6000c lw a2,12(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
65 98: 8fc70010 lw a3,16(s8) ; | arg 0,1,2,3,4,5,6 (fetched from local area stored to above)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
66 9c: 8fc80014 lw t0,20(s8) ; | (t0 = a4)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
67 a0: 8fc90018 lw t1,24(s8) ; | (t1 = a5)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
68 a4: 8fca001c lw t2,28(s8) ; | (t2 = a6)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
69 a8: 0c000000 jal 0 <leaf_call> ; call and ret addr -> ra
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
70 ac: 00000000 nop ; branch delay slot
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
71 b0: 03c0e821 move sp,s8 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
72 b4: 8fbf0024 lw ra,36(sp) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
73 b8: 8fbe0020 lw s8,32(sp) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
74 bc: 27bd0028 addiu sp,sp,40 ; | epilog
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
75 c0: 03e00008 jr ra ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
76 c4: 00000000 nop ; | branch delay slot
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
77
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
78 000000c8 <main>:
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
79 c8: 27bdfff8 addiu sp,sp,-8 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
80 cc: afbf0004 sw ra,4(sp) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
81 d0: afbe0000 sw s8,0(sp) ; | prolog
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
82 d4: 03a0f021 move s8,sp ; | frame pointer (note: with offset to frame start, but static compared to sp)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
83 d8: 00002021 move a0,zero ; arg 0
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
84 dc: 24050001 li a1,1 ; arg 1
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
85 e0: 24060002 li a2,2 ; arg 2
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
86 e4: 24070003 li a3,3 ; arg 3
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
87 e8: 24080004 li t0,4 ; arg 4 (t0 = a4)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
88 ec: 24090005 li t1,5 ; arg 5 (t1 = a5)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
89 f0: 240a0006 li t2,6 ; arg 6 (t2 = a6)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
90 f4: 240b0007 li t3,7 ; arg 7 (t3 = a7)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
91 f8: 0c000000 jal 0 <leaf_call> ; call and ret addr -> ra
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
92 fc: 00000000 nop ; branch delay slot
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
93 100: 00001021 move v0,zero ; return value
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
94 104: 03c0e821 move sp,s8 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
95 108: 8fbf0004 lw ra,4(sp) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
96 10c: 8fbe0000 lw s8,0(sp) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
97 110: 27bd0008 addiu sp,sp,8 ; | epilog
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
98 114: 03e00008 jr ra ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
99 118: 00000000 nop ; | branch delay slot
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
100
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
101
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
102
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
103 ; ------------- as above but more args to use stack params ----------->
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
104
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
105 ; #include <stdlib.h>
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
106 ;
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
107 ; void leaf_call(int b, int c, int d, int e, int f, int g, int h, int i, int j)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
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 ; void nonleaf_call(int a, int b, int c, int d, int e, int f, int g, int h, int i, int j)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
112 ; {
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
113 ; /* use some local data */
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
114 ; *(char*)alloca(220) = 'L';
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
115 ; leaf_call(b, c, d, e, f, g, h, i, j);
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
116 ; }
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
117 ;
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
118 ; int main()
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
119 ; {
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
120 ; nonleaf_call(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
121 ; return 0;
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
122 ; }
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
123
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
124
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
125
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
126 ; output from psptoolchain-20111215-psp w/ gcc 4.9.3
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
127
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
128 00000000 <leaf_call>:
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
129 0: 27bdffd8 addiu sp,sp,-40
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
130 4: afbe0024 sw s8,36(sp)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
131 8: 03a0f021 move s8,sp
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
132 c: afc40000 sw a0,0(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
133 10: afc50004 sw a1,4(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
134 14: afc60008 sw a2,8(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
135 18: afc7000c sw a3,12(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
136 1c: afc80010 sw t0,16(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
137 20: afc90014 sw t1,20(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
138 24: afca0018 sw t2,24(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
139 28: afcb001c sw t3,28(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
140 2c: 03c0e821 move sp,s8
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
141 30: 8fbe0024 lw s8,36(sp)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
142 34: 27bd0028 addiu sp,sp,40
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
143 38: 03e00008 jr ra
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
144 3c: 00000000 nop
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
145
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
146 00000040 <nonleaf_call>:
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
147 40: 27bdffd0 addiu sp,sp,-48 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
148 44: afbf002c sw ra,44(sp) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
149 48: afbe0028 sw s8,40(sp) ; | prolog
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
150 4c: 03a0f021 move s8,sp ; / frame pointer (note: with offset to frame start, but static compared to sp)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
151 50: afc40008 sw a0,8(s8) ; \
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
152 54: afc5000c sw a1,12(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
153 58: afc60010 sw a2,16(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
154 5c: afc70014 sw a3,20(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
155 60: afc80018 sw t0,24(s8) ; | in args 0,1,2,3,4,5,6,7 -> temp space in local area
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
156 64: afc9001c sw t1,28(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
157 68: afca0020 sw t2,32(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
158 6c: afcb0024 sw t3,36(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
159 70: 27bdff18 addiu sp,sp,-232 ; alloca(220) - with padding to guarantee alignment
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
160 74: 27a20008 addiu v0,sp,8 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
161 78: 24420007 addiu v0,v0,7 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
162 7c: 000210c2 srl v0,v0,0x3 ; | start of alloca()'d memory -> v1, by ...
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
163 80: 000210c0 sll v0,v0,0x3 ; | ... using v0 as helper to align to 8b
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
164 84: 00401821 move v1,v0 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
165 88: 2402004c li v0,76 ; 'L' -> v0, and...
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
166 8c: a0620000 sb v0,0(v1) ; ... store in local area (of alloca()'d space)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
167 90: 8fc20034 lw v0,52(s8) ; arg 8 (fetched from prev frame's param area), and ...
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
168 94: afa20000 sw v0,0(sp) ; ... "pushed" onto stack
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
169 98: 8fc4000c lw a0,12(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
170 9c: 8fc50010 lw a1,16(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
171 a0: 8fc60014 lw a2,20(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
172 a4: 8fc70018 lw a3,24(s8) ; | arg 0,1,2,3,4,5,6 (fetched from local area stored to above)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
173 a8: 8fc8001c lw t0,28(s8) ; | (t0 = a4)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
174 ac: 8fc90020 lw t1,32(s8) ; | (t1 = a5)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
175 b0: 8fca0024 lw t2,36(s8) ; | (t2 = a6)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
176 b4: 8fcb0030 lw t3,48(s8) ; | (t3 = a7)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
177 b8: 0c000000 jal 0 <leaf_call> ; call and ret addr -> ra
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
178 bc: 00000000 nop ; branch delay slot
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
179 c0: 03c0e821 move sp,s8 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
180 c4: 8fbf002c lw ra,44(sp) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
181 c8: 8fbe0028 lw s8,40(sp) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
182 cc: 27bd0030 addiu sp,sp,48 ; | epilog
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
183 d0: 03e00008 jr ra ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
184 d4: 00000000 nop ; | branch delay slot
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
185
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
186 000000d8 <main>:
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
187 d8: 27bdfff0 addiu sp,sp,-16 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
188 dc: afbf000c sw ra,12(sp) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
189 e0: afbe0008 sw s8,8(sp) ; | prolog
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
190 e4: 03a0f021 move s8,sp ; | frame pointer (note: with offset to frame start, but static compared to sp)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
191 e8: 24020008 li v0,8 ; arg 8
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
192 ec: afa20000 sw v0,0(sp) ; ... "pushed" onto stack
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
193 f0: 24020009 li v0,9 ; arg 9
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
194 f4: afa20004 sw v0,4(sp) ; ... "pushed" onto stack
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
195 f8: 00002021 move a0,zero ; arg 0
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
196 fc: 24050001 li a1,1 ; arg 1
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
197 100: 24060002 li a2,2 ; arg 2
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
198 104: 24070003 li a3,3 ; arg 3
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
199 108: 24080004 li t0,4 ; arg 4 (t0 = a4)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
200 10c: 24090005 li t1,5 ; arg 5 (t1 = a5)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
201 110: 240a0006 li t2,6 ; arg 6 (t2 = a6)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
202 114: 240b0007 li t3,7 ; arg 7 (t3 = a7)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
203 118: 0c000000 jal 0 <leaf_call> ; call and ret addr -> ra
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
204 11c: 00000000 nop ; branch delay slot
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
205 120: 00001021 move v0,zero ; return value
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
206 124: 03c0e821 move sp,s8 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
207 128: 8fbf000c lw ra,12(sp) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
208 12c: 8fbe0008 lw s8,8(sp) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
209 130: 27bd0010 addiu sp,sp,16 ; | epilog
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
210 134: 03e00008 jr ra ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
211 138: 00000000 nop ; | branch delay slot
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
212
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
213
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
214
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
215 ; ------------- with var args to see spilling ----------->
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 ; #include <stdlib.h>
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
218 ; #include <stdarg.h>
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
219 ;
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
220 ; void leaf_call(int b, int c, int d, int e, int f, int g, int h, int i, int j)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
221 ; {
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
222 ; }
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
223 ;
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
224 ; void nonleaf_call(int a, ...)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
225 ; {
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
226 ; int b, c, d, e, f, g, h, i, j;
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
227 ; va_list ap;
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
228 ; va_start(ap, a);
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
229 ; b = va_arg(ap, int);
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
230 ; c = va_arg(ap, int);
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
231 ; d = va_arg(ap, int);
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
232 ; e = va_arg(ap, int);
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
233 ; f = va_arg(ap, int);
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
234 ; g = va_arg(ap, int);
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
235 ; h = va_arg(ap, int);
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
236 ; i = va_arg(ap, int);
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
237 ; j = va_arg(ap, int);
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
238 ; /* use some local data */
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
239 ; *(char*)alloca(220) = 'L';
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
240 ; leaf_call(b, c, d, e, f, g, h, i, j);
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
241 ; }
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
242 ;
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
243 ; int main()
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
244 ; {
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
245 ; nonleaf_call(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
246 ; return 0;
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
247 ; }
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
248
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
249
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
250
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
251 ; output from psptoolchain-20111215-psp w/ gcc 4.9.3
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
252
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
253 00000000 <leaf_call>:
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
254 0: 27bdffd8 addiu sp,sp,-40
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
255 4: afbe0024 sw s8,36(sp)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
256 8: 03a0f021 move s8,sp
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
257 c: afc40000 sw a0,0(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
258 10: afc50004 sw a1,4(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
259 14: afc60008 sw a2,8(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
260 18: afc7000c sw a3,12(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
261 1c: afc80010 sw t0,16(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
262 20: afc90014 sw t1,20(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
263 24: afca0018 sw t2,24(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
264 28: afcb001c sw t3,28(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
265 2c: 03c0e821 move sp,s8
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
266 30: 8fbe0024 lw s8,36(sp)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
267 34: 27bd0028 addiu sp,sp,40
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
268 38: 03e00008 jr ra
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
269 3c: 00000000 nop
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
270
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
271 00000040 <nonleaf_call>:
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
272 40: 27bdffa0 addiu sp,sp,-96 ; | leaving 32b extra space adjacent to prev frame's param area for spilling
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
273 44: afbf003c sw ra,60(sp) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
274 48: afbe0038 sw s8,56(sp) ; | prolog
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
275 4c: 03a0f021 move s8,sp ; / frame pointer (note: with offset to frame start, but static compared to sp)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
276 50: afc50044 sw a1,68(s8) ; \
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
277 54: afc60048 sw a2,72(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
278 58: afc7004c sw a3,76(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
279 5c: afc80050 sw t0,80(s8) ; | in args 1,2,3,4,5,6,7 -> spill area in current frame (adjacent to prev frame's param area)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
280 60: afc90054 sw t1,84(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
281 64: afca0058 sw t2,88(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
282 68: afcb005c sw t3,92(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
283 6c: afc40030 sw a0,48(s8) ; in arg 0 -> temp space in local area
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
284 70: 27c20060 addiu v0,s8,96 ; v0 initialized to point ...
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
285 74: 2442ffe4 addiu v0,v0,-28 ; ... to start of spill area (96 - 28 = 68, where we spilled a1)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
286 78: afc2002c sw v0,44(s8) ; store read ptr in local area
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
287 7c: 8fc2002c lw v0,44(s8) ; | get read pointer in v0 (pointless here, but part of following pattern) ...
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
288 80: 24430004 addiu v1,v0,4 ; | ... advance ...
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
289 84: afc3002c sw v1,44(s8) ; | in arg 1 ... store again ...
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
290 88: 8c420000 lw v0,0(v0) ; | ... arg -> v0 (using pre-inc read location), then ...
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
291 8c: afc20008 sw v0,8(s8) ; / ... write to local area on stack for later
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
292 90: 8fc2002c lw v0,44(s8) ; \
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
293 94: 24430004 addiu v1,v0,4 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
294 98: afc3002c sw v1,44(s8) ; | in arg 2
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
295 9c: 8c420000 lw v0,0(v0) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
296 a0: afc2000c sw v0,12(s8) ; /
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
297 a4: 8fc2002c lw v0,44(s8) ; \
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
298 a8: 24430004 addiu v1,v0,4 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
299 ac: afc3002c sw v1,44(s8) ; | in arg 3
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
300 b0: 8c420000 lw v0,0(v0) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
301 b4: afc20010 sw v0,16(s8) ; /
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
302 b8: 8fc2002c lw v0,44(s8) ; \
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
303 bc: 24430004 addiu v1,v0,4 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
304 c0: afc3002c sw v1,44(s8) ; | in arg 4
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
305 c4: 8c420000 lw v0,0(v0) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
306 c8: afc20014 sw v0,20(s8) ; /
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
307 cc: 8fc2002c lw v0,44(s8) ; \
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
308 d0: 24430004 addiu v1,v0,4 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
309 d4: afc3002c sw v1,44(s8) ; | in arg 5
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
310 d8: 8c420000 lw v0,0(v0) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
311 dc: afc20018 sw v0,24(s8) ; /
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
312 e0: 8fc2002c lw v0,44(s8) ; \
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
313 e4: 24430004 addiu v1,v0,4 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
314 e8: afc3002c sw v1,44(s8) ; | in arg 6
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
315 ec: 8c420000 lw v0,0(v0) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
316 f0: afc2001c sw v0,28(s8) ; /
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
317 f4: 8fc2002c lw v0,44(s8) ; \
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
318 f8: 24430004 addiu v1,v0,4 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
319 fc: afc3002c sw v1,44(s8) ; | in arg 7
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
320 100: 8c420000 lw v0,0(v0) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
321 104: afc20020 sw v0,32(s8) ; /
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
322 108: 8fc2002c lw v0,44(s8) ; \
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
323 10c: 24430004 addiu v1,v0,4 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
324 110: afc3002c sw v1,44(s8) ; | in arg 8
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
325 114: 8c420000 lw v0,0(v0) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
326 118: afc20024 sw v0,36(s8) ; /
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
327 11c: 8fc2002c lw v0,44(s8) ; \
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
328 120: 24430004 addiu v1,v0,4 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
329 124: afc3002c sw v1,44(s8) ; | in arg 9
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
330 128: 8c420000 lw v0,0(v0) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
331 12c: afc20028 sw v0,40(s8) ; /
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
332 130: 27bdff18 addiu sp,sp,-232 ; alloca(220) - with padding to guarantee alignment
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
333 134: 27a20008 addiu v0,sp,8 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
334 138: 24420007 addiu v0,v0,7 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
335 13c: 000210c2 srl v0,v0,0x3 ; | start of alloca()'d memory -> v1, by ...
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
336 140: 000210c0 sll v0,v0,0x3 ; | ... using v0 as helper to align to 8b
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
337 144: 00401821 move v1,v0 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
338 148: 2402004c li v0,76 ; 'L' -> v0, and...
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
339 14c: a0620000 sb v0,0(v1) ; ... store in local area (of alloca()'d space)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
340 150: 8fc20028 lw v0,40(s8) ; arg 8 (fetched from local area stored to above) and ...
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
341 154: afa20000 sw v0,0(sp) ; ... "pushed" onto stack
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
342 158: 8fc40008 lw a0,8(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
343 15c: 8fc5000c lw a1,12(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
344 160: 8fc60010 lw a2,16(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
345 164: 8fc70014 lw a3,20(s8) ; | arg 0,1,2,3,4,5,6 (fetched from local area stored to above)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
346 168: 8fc80018 lw t0,24(s8) ; | (t0 = a4)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
347 16c: 8fc9001c lw t1,28(s8) ; | (t1 = a5)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
348 170: 8fca0020 lw t2,32(s8) ; | (t2 = a6)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
349 174: 8fcb0024 lw t3,36(s8) ; | (t3 = a7)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
350 178: 0c000000 jal 0 <leaf_call> ; call and ret addr -> ra
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
351 17c: 00000000 nop ; branch delay slot
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
352 180: 03c0e821 move sp,s8 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
353 184: 8fbf003c lw ra,60(sp) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
354 188: 8fbe0038 lw s8,56(sp) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
355 18c: 27bd0060 addiu sp,sp,96 ; | epilog
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
356 190: 03e00008 jr ra ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
357 194: 00000000 nop | branch delay slot
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
358
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
359 00000198 <main>:
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
360 198: 27bdfff0 addiu sp,sp,-16 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
361 19c: afbf000c sw ra,12(sp) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
362 1a0: afbe0008 sw s8,8(sp) ; | prolog
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
363 1a4: 03a0f021 move s8,sp ; | frame pointer (note: with offset to frame start, but static compared to sp)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
364 1a8: 24020008 li v0,8 ; arg 8
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
365 1ac: afa20000 sw v0,0(sp) ; ... "pushed" onto stack
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
366 1b0: 24020009 li v0,9 ; arg 9
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
367 1b4: afa20004 sw v0,4(sp) ; ... "pushed" onto stack
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
368 1b8: 00002021 move a0,zero ; arg 0
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
369 1bc: 24050001 li a1,1 ; arg 1
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
370 1c0: 24060002 li a2,2 ; arg 2
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
371 1c4: 24070003 li a3,3 ; arg 3
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
372 1c8: 24080004 li t0,4 ; arg 4 (t0 = a4)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
373 1cc: 24090005 li t1,5 ; arg 5 (t1 = a5)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
374 1d0: 240a0006 li t2,6 ; arg 6 (t2 = a6)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
375 1d4: 240b0007 li t3,7 ; arg 7 (t3 = a7)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
376 1d8: 0c000000 jal 0 <leaf_call> ; call and ret addr -> ra
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
377 1dc: 00000000 nop ; branch delay slot
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
378 1e0: 00001021 move v0,zero ; return value
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
379 1e4: 03c0e821 move sp,s8 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
380 1e8: 8fbf000c lw ra,12(sp) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
381 1ec: 8fbe0008 lw s8,8(sp) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
382 1f0: 27bd0010 addiu sp,sp,16 ; | epilog
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
383 1f4: 03e00008 jr ra ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
384 1f8: 00000000 nop ; | branch delay slot
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
385
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
386
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
387
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
388 ; ------------- var args with ints and floats to see spilling (which remains only a?-a7 regs), b/c doubles are passed via them and floats are promoted to doubles in (...) ----------->
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
389
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
390 ; #include <stdlib.h>
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
391 ; #include <stdarg.h>
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
392 ;
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
393 ; void leaf_call(int b, int c, int d, int e, float f, float g, int h, int i, float j)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
394 ; {
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
395 ; }
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
396 ;
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
397 ; void nonleaf_call(int a, ...)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
398 ; {
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
399 ; int b, c, d, e, h, i;
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
400 ; float f, g, j;
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
401 ; va_list ap;
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
402 ; va_start(ap, a);
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
403 ; b = va_arg(ap, int);
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
404 ; c = va_arg(ap, int);
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
405 ; d = va_arg(ap, int);
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
406 ; e = va_arg(ap, int);
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
407 ; f = (float)va_arg(ap, double);
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
408 ; g = (float)va_arg(ap, double);
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
409 ; h = va_arg(ap, int);
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
410 ; i = va_arg(ap, int);
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
411 ; j = (float)va_arg(ap, double);
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
412 ; /* use some local data */
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
413 ; *(char*)alloca(220) = 'L';
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
414 ; leaf_call(b, c, d, e, f, g, h, i, j);
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
415 ; }
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
416 ;
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
417 ; int main()
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
418 ; {
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
419 ; nonleaf_call(0, 1, 2, 3, 4, 5.f, 6.f, 7, 8, 9.f);
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
420 ; return 0;
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
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 ; output from psptoolchain-20111215-psp w/ gcc 4.9.3
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
426
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
427 00000000 <leaf_call>:
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
428 0: 27bdffd0 addiu sp,sp,-48
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
429 4: afbe002c sw s8,44(sp)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
430 8: 03a0f021 move s8,sp
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
431 c: afc40000 sw a0,0(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
432 10: afc50004 sw a1,4(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
433 14: afc60008 sw a2,8(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
434 18: afc7000c sw a3,12(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
435 1c: e7cc0010 swc1 $f12,16(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
436 20: e7cd0014 swc1 $f13,20(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
437 24: afc80018 sw t0,24(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
438 28: afc9001c sw t1,28(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
439 2c: e7ce0020 swc1 $f14,32(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
440 30: 03c0e821 move sp,s8
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
441 34: 8fbe002c lw s8,44(sp)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
442 38: 27bd0030 addiu sp,sp,48
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
443 3c: 03e00008 jr ra
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
444 40: 00000000 nop
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
445
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
446 00000044 <nonleaf_call>:
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
447 44: 27bdffa8 addiu sp,sp,-88 ; | leaving 32b extra space adjacent to prev frame's param area for spilling
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
448 48: afbf0034 sw ra,52(sp) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
449 4c: afbe0030 sw s8,48(sp) ; | prolog
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
450 50: 03a0f021 move s8,sp ; / frame pointer (note: with offset to frame start, but static compared to sp)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
451 54: afc5003c sw a1,60(s8) ; \
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
452 58: afc60040 sw a2,64(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
453 5c: afc70044 sw a3,68(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
454 60: afc80048 sw t0,72(s8) ; | in args 1,2,3,4,5 (spread out over 7 param regs) -> spill area in current frame (adjacent to prev frame's param area)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
455 64: afc9004c sw t1,76(s8) ; | this one is just padding
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
456 68: afca0050 sw t2,80(s8) ; | |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
457 6c: afcb0054 sw t3,84(s8) ; | | this is arg 5, passed as a double, spilled like integers
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
458 70: afc40028 sw a0,40(s8) ; in arg 0 -> temp space in local area
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
459 74: 27c20058 addiu v0,s8,88 ; v0 initialized to point ...
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
460 78: 2442ffe4 addiu v0,v0,-28 ; ... to start of spill area (88 - 28 = 60, where we spilled a1)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
461 7c: afc20024 sw v0,36(s8) ; store read ptr in local area
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
462 80: 8fc20024 lw v0,36(s8) ; | get read pointer in v0 (pointless here, but part of following pattern) ...
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
463 84: 24430004 addiu v1,v0,4 ; | ... advance ...
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
464 88: afc30024 sw v1,36(s8) ; | in arg 1 ... store again ...
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
465 8c: 8c420000 lw v0,0(v0) ; | ... arg -> v0 (using pre-inc read location), then ...
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
466 90: afc20000 sw v0,0(s8) ; / ... write to local area on stack for later
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
467 94: 8fc20024 lw v0,36(s8) ; \
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
468 98: 24430004 addiu v1,v0,4 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
469 9c: afc30024 sw v1,36(s8) ; | in arg 2
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
470 a0: 8c420000 lw v0,0(v0) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
471 a4: afc20004 sw v0,4(s8) ; /
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
472 a8: 8fc20024 lw v0,36(s8) ; \
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
473 ac: 24430004 addiu v1,v0,4 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
474 b0: afc30024 sw v1,36(s8) ; | in arg 3
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
475 b4: 8c420000 lw v0,0(v0) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
476 b8: afc20008 sw v0,8(s8) ; /
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
477 bc: 8fc20024 lw v0,36(s8) ; \
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
478 c0: 24430004 addiu v1,v0,4 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
479 c4: afc30024 sw v1,36(s8) ; | in arg 4
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
480 c8: 8c420000 lw v0,0(v0) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
481 cc: afc2000c sw v0,12(s8) ; /
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
482 d0: 8fc20024 lw v0,36(s8) ; \ get read ptr in v0
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
483 d4: 24430007 addiu v1,v0,7 ; | |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
484 d8: 2402fff8 li v0,-8 ; | | align
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
485 dc: 00621024 and v0,v1,v0 ; | |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
486 e0: 24430008 addiu v1,v0,8 ; | advance read ptr to point to double
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
487 e4: afc30024 sw v1,36(s8) ; | restore read ptr
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
488 e8: 8c430004 lw v1,4(v0) ; | in arg 5 |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
489 ec: 8c420000 lw v0,0(v0) ; | | load both parts of double ...
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
490 f0: 00402021 move a0,v0 ; | | ... and store in a{0,1} pair (used to pass doubles, used in next call)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
491 f4: 00602821 move a1,v1 ; | /
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
492 f8: 0c000000 jal 0 <leaf_call> ; | \ call to cast double to float, returned in f0
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
493 fc: 00000000 nop ; | | NOTE: not a call to leaf_call() (objdump done from .o file, not finally linked executable)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
494 100: e7c00010 swc1 $f0,16(s8) ; / write float to local area on stack for later
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
495 104: 8fc20024 lw v0,36(s8) ; \
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
496 108: 24430007 addiu v1,v0,7 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
497 10c: 2402fff8 li v0,-8 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
498 110: 00621024 and v0,v1,v0 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
499 114: 24430008 addiu v1,v0,8 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
500 118: afc30024 sw v1,36(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
501 11c: 8c430004 lw v1,4(v0) ; | in arg 6
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
502 120: 8c420000 lw v0,0(v0) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
503 124: 00402021 move a0,v0 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
504 128: 00602821 move a1,v1 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
505 12c: 0c000000 jal 0 <leaf_call> ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
506 130: 00000000 nop ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
507 134: e7c00014 swc1 $f0,20(s8) ; /
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
508 138: 8fc20024 lw v0,36(s8) ; \
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
509 13c: 24430004 addiu v1,v0,4 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
510 140: afc30024 sw v1,36(s8) ; | in arg 7
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
511 144: 8c420000 lw v0,0(v0) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
512 148: afc20018 sw v0,24(s8) ; /
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
513 14c: 8fc20024 lw v0,36(s8) ; \
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
514 150: 24430004 addiu v1,v0,4 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
515 154: afc30024 sw v1,36(s8) ; | in arg 8
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
516 158: 8c420000 lw v0,0(v0) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
517 15c: afc2001c sw v0,28(s8) ; /
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
518 160: 8fc20024 lw v0,36(s8) ; \
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
519 164: 24430007 addiu v1,v0,7 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
520 168: 2402fff8 li v0,-8 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
521 16c: 00621024 and v0,v1,v0 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
522 170: 24430008 addiu v1,v0,8 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
523 174: afc30024 sw v1,36(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
524 178: 8c430004 lw v1,4(v0) ; | in arg 9
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
525 17c: 8c420000 lw v0,0(v0) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
526 180: 00402021 move a0,v0 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
527 184: 00602821 move a1,v1 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
528 188: 0c000000 jal 0 <leaf_call> ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
529 18c: 00000000 nop ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
530 190: e7c00020 swc1 $f0,32(s8) ; /
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
531 194: 27bdff18 addiu sp,sp,-232 ; alloca(220) - with padding to guarantee alignment
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
532 198: 03a01021 move v0,sp ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
533 19c: 24420007 addiu v0,v0,7 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
534 1a0: 000210c2 srl v0,v0,0x3 ; | start of alloca()'d memory -> v1, by ...
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
535 1a4: 000210c0 sll v0,v0,0x3 ; | ... using v0 as helper to align to 8b
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
536 1a8: 00401821 move v1,v0 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
537 1ac: 2402004c li v0,76 ; 'L' -> v0, and...
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
538 1b0: a0620000 sb v0,0(v1) ; ... store in local area (of alloca()'d space)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
539 1b4: 8fc40000 lw a0,0(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
540 1b8: 8fc50004 lw a1,4(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
541 1bc: 8fc60008 lw a2,8(s8) ; | arg 0,1,2,3 (int args, fetched from local area stored to above)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
542 1c0: 8fc7000c lw a3,12(s8) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
543 1c4: c7cc0010 lwc1 $f12,16(s8) ; arg 4 (float, fetched from local area stored to above)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
544 1c8: c7cd0014 lwc1 $f13,20(s8) ; arg 5 (float, fetched from local area stored to above)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
545 1cc: 8fc80018 lw t0,24(s8) ; arg 6 (int, fetched from local area stored to above, t0 = a4)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
546 1d0: 8fc9001c lw t1,28(s8) ; arg 7 (int, fetched from local area stored to above, t1 = a5)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
547 1d4: c7ce0020 lwc1 $f14,32(s8) ; arg 9 (float, fetched from local area stored to above)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
548 1d8: 0c000000 jal 0 <leaf_call> ; call and ret addr -> ra
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
549 1dc: 00000000 nop ; branch delay slot
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
550 1e0: 03c0e821 move sp,s8 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
551 1e4: 8fbf0034 lw ra,52(sp) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
552 1e8: 8fbe0030 lw s8,48(sp) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
553 1ec: 27bd0058 addiu sp,sp,88 ; | epilog
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
554 1f0: 03e00008 jr ra ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
555 1f4: 00000000 nop ; | branch delay slot
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
556
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
557 000001f8 <main>:
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
558 1f8: 27bdffe0 addiu sp,sp,-32 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
559 1fc: afbf001c sw ra,28(sp) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
560 200: afbe0018 sw s8,24(sp) ; | prolog
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
561 204: 03a0f021 move s8,sp ; / frame pointer (note: with offset to frame start, but static compared to sp)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
562 208: 8f8a0000 lw t2,0(gp) ; \
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
563 20c: 8f8b0004 lw t3,4(gp) ; / arg 5 (t1,t2 = a4,a5), as double b/c of vararg, effectively skipping t1 (=a5)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
564 210: 8f820008 lw v0,8(gp) ; \
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
565 214: 8f83000c lw v1,12(gp) ; | arg 6, as double b/c of vararg, via v0 and v1 ...
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
566 218: afa20000 sw v0,0(sp) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
567 21c: afa30004 sw v1,4(sp) ; | ... "pushed" onto stack
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
568 220: 24020007 li v0,7 ; arg 7
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
569 224: afa20008 sw v0,8(sp) ; ... "pushed" onto stack
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
570 228: 24020008 li v0,8 ; arg 8
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
571 22c: afa2000c sw v0,12(sp) ; ... "pushed" onto stack
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
572 230: 8f820010 lw v0,16(gp) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
573 234: 8f830014 lw v1,20(gp) ; | arg 9, as double b/c of vararg ...
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
574 238: afa20010 sw v0,16(sp) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
575 23c: afa30014 sw v1,20(sp) ; | ... "pushed" onto stack
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
576 240: 00002021 move a0,zero ; arg 0
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
577 244: 24050001 li a1,1 ; arg 1
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
578 248: 24060002 li a2,2 ; arg 2
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
579 24c: 24070003 li a3,3 ; arg 3
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
580 250: 24080004 li t0,4 ; arg 4 (t0 = a4)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
581 254: 0c000000 jal 0 <leaf_call> ; call and ret addr -> ra
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
582 258: 00000000 nop ; branch delay slot
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
583 25c: 00001021 move v0,zero ; return value
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
584 260: 03c0e821 move sp,s8 ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
585 264: 8fbf001c lw ra,28(sp) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
586 268: 8fbe0018 lw s8,24(sp) ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
587 26c: 27bd0020 addiu sp,sp,32 ; | epilog
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
588 270: 03e00008 jr ra ; |
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
589 274: 00000000 nop ; | branch delay slot
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
590
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
591
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
592
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
593 ; --------------------- further notes ------------------->
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
594
361
06c9adae114d - typos
Tassilo Philipp
parents: 327
diff changeset
595 ; when passing less arguments than stack params, involving an ellipsis, spill area still spills all registers,
327
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
596 ; excluding named ones, e.g.:
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
597 ;
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
598 ; void c(int a, ...) { ... }
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
599 ; c(0, 1, 2, 3, 4);
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
600 ;
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
601 ; contains as spilling code same as above:
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
602
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
603 84: afc5002c sw a1,44(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
604 88: afc60030 sw a2,48(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
605 8c: afc70034 sw a3,52(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
606 90: afc80038 sw t0,56(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
607 94: afc9003c sw t1,60(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
608 98: afca0040 sw t2,64(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
609 9c: afcb0044 sw t3,68(s8)
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
610
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
611
529
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
612
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
613 ; ---------- structs by value ---------->
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
614 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
615 ; struct A { int i, j; long long l; };
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
616 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
617 ; void leaf_call(int b, int c, int d, int e, struct A f, int g, int h)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
618 ; {
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
619 ; }
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
620 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
621 ; void nonleaf_call(int a, int b, int c, int d, int e, struct A f, int g, int h)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
622 ; {
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
623 ; /* use some local data */
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
624 ; char l[100] ={ 'L'};
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
625 ; leaf_call(b, c, d, e, f, g, h);
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
626 ; }
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
627 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
628 ; int main()
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
629 ; {
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
630 ; nonleaf_call(0, 1, 2, 3, 4, (struct A){5, 6, 7ll}, 8, 9);
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
631 ; return 0;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
632 ; }
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
633
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
634
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
635
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
636 ; output from psptoolchain-20111215-psp w/ gcc 4.9.3
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
637
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
638 00000000 <leaf_call>:
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
639 0: 27bdffd0 addiu sp,sp,-48
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
640 4: afbe002c sw s8,44(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
641 8: afb00028 sw s0,40(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
642 c: 03a0f021 move s8,sp
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
643 10: afc40010 sw a0,16(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
644 14: afc50014 sw a1,20(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
645 18: afc60018 sw a2,24(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
646 1c: afc7001c sw a3,28(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
647 20: 01008021 move s0,t0
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
648 24: afc90020 sw t1,32(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
649 28: afca0024 sw t2,36(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
650 2c: 8e050000 lw a1,0(s0)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
651 30: 8e040004 lw a0,4(s0)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
652 34: 8e030008 lw v1,8(s0)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
653 38: 8e02000c lw v0,12(s0)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
654 3c: afc50000 sw a1,0(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
655 40: afc40004 sw a0,4(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
656 44: afc30008 sw v1,8(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
657 48: afc2000c sw v0,12(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
658 4c: 03c0e821 move sp,s8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
659 50: 8fbe002c lw s8,44(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
660 54: 8fb00028 lw s0,40(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
661 58: 27bd0030 addiu sp,sp,48
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
662 5c: 03e00008 jr ra
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
663 60: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
664
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
665 00000064 <nonleaf_call>:
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
666 64: 27bdff58 addiu sp,sp,-168
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
667 68: afbf00a4 sw ra,164(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
668 6c: afbe00a0 sw s8,160(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
669 70: afb0009c sw s0,156(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
670 74: 03a0f021 move s8,sp
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
671 78: afc40078 sw a0,120(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
672 7c: afc5007c sw a1,124(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
673 80: afc60080 sw a2,128(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
674 84: afc70084 sw a3,132(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
675 88: afc80088 sw t0,136(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
676 8c: 01208021 move s0,t1
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
677 90: afca008c sw t2,140(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
678 94: afcb0090 sw t3,144(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
679 98: 8e050000 lw a1,0(s0)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
680 9c: 8e040004 lw a0,4(s0)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
681 a0: 8e030008 lw v1,8(s0)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
682 a4: 8e02000c lw v0,12(s0)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
683 a8: afc50000 sw a1,0(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
684 ac: afc40004 sw a0,4(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
685 b0: afc30008 sw v1,8(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
686 b4: afc2000c sw v0,12(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
687 b8: 27c30010 addiu v1,s8,16
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
688 bc: 24020064 li v0,100
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
689 c0: 00602021 move a0,v1
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
690 c4: 00002821 move a1,zero
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
691 c8: 00403021 move a2,v0
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
692 cc: 0c000000 jal 0 <leaf_call>
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
693 d0: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
694 d4: 2402004c li v0,76
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
695 d8: a3c20010 sb v0,16(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
696 dc: 8fc4007c lw a0,124(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
697 e0: 8fc50080 lw a1,128(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
698 e4: 8fc60084 lw a2,132(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
699 e8: 8fc70088 lw a3,136(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
700 ec: 03c04021 move t0,s8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
701 f0: 8fc9008c lw t1,140(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
702 f4: 8fca0090 lw t2,144(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
703 f8: 0c000000 jal 0 <leaf_call>
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
704 fc: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
705 100: 03c0e821 move sp,s8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
706 104: 8fbf00a4 lw ra,164(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
707 108: 8fbe00a0 lw s8,160(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
708 10c: 8fb0009c lw s0,156(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
709 110: 27bd00a8 addiu sp,sp,168
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
710 114: 03e00008 jr ra
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
711 118: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
712
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
713 0000011c <main>:
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
714 11c: 27bdffe8 addiu sp,sp,-24
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
715 120: afbf0014 sw ra,20(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
716 124: afbe0010 sw s8,16(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
717 128: 03a0f021 move s8,sp
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
718 12c: 24020005 li v0,5
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
719 130: afc20000 sw v0,0(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
720 134: 24020006 li v0,6
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
721 138: afc20004 sw v0,4(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
722 13c: 24020007 li v0,7
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
723 140: 00001821 move v1,zero
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
724 144: afc20008 sw v0,8(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
725 148: afc3000c sw v1,12(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
726 14c: 00002021 move a0,zero
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
727 150: 24050001 li a1,1
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
728 154: 24060002 li a2,2
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
729 158: 24070003 li a3,3
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
730 15c: 24080004 li t0,4
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
731 160: 03c04821 move t1,s8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
732 164: 240a0008 li t2,8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
733 168: 240b0009 li t3,9
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
734 16c: 0c000000 jal 0 <leaf_call>
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
735 170: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
736 174: 00001021 move v0,zero
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
737 178: 03c0e821 move sp,s8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
738 17c: 8fbf0014 lw ra,20(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
739 180: 8fbe0010 lw s8,16(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
740 184: 27bd0018 addiu sp,sp,24
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
741 188: 03e00008 jr ra
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
742 18c: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
743
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
744
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
745
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
746
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
747 ; ---------- structs by value, complex example (multiple structs) ---------->
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
748 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
749 ; struct A { int i, j; float f; };
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
750 ; struct B { double d; long long l; };
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
751 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
752 ; 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)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
753 ; {
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
754 ; }
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
755 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
756 ; 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)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
757 ; {
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
758 ; /* use some local data */
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
759 ; char l[100] ={ 'L'};
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
760 ; leaf_call(b, c, d, e, f, g, h, i, j);
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
761 ; }
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
762 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
763 ; int main()
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
764 ; {
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
765 ; 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);
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
766 ; return 0;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
767 ; }
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
768
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
769
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
770
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
771 ; output from psptoolchain-20111215-psp w/ gcc 4.9.3
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
772
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
773 00000000 <leaf_call>:
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
774 0: 27bdff98 addiu sp,sp,-104
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
775 4: afbe0064 sw s8,100(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
776 8: afb30060 sw s3,96(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
777 c: afb2005c sw s2,92(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
778 10: afb10058 sw s1,88(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
779 14: afb00054 sw s0,84(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
780 18: 03a0f021 move s8,sp
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
781 1c: afc40040 sw a0,64(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
782 20: 00a09821 move s3,a1
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
783 24: 00c08821 move s1,a2
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
784 28: afc70044 sw a3,68(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
785 2c: afc80048 sw t0,72(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
786 30: 01209021 move s2,t1
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
787 34: 01408021 move s0,t2
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
788 38: afcb004c sw t3,76(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
789 3c: 8e640000 lw a0,0(s3)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
790 40: 8e630004 lw v1,4(s3)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
791 44: 8e620008 lw v0,8(s3)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
792 48: afc40030 sw a0,48(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
793 4c: afc30034 sw v1,52(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
794 50: afc20038 sw v0,56(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
795 54: 8e250000 lw a1,0(s1)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
796 58: 8e240004 lw a0,4(s1)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
797 5c: 8e230008 lw v1,8(s1)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
798 60: 8e22000c lw v0,12(s1)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
799 64: afc50020 sw a1,32(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
800 68: afc40024 sw a0,36(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
801 6c: afc30028 sw v1,40(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
802 70: afc2002c sw v0,44(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
803 74: 8e440000 lw a0,0(s2)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
804 78: 8e430004 lw v1,4(s2)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
805 7c: 8e420008 lw v0,8(s2)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
806 80: afc40010 sw a0,16(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
807 84: afc30014 sw v1,20(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
808 88: afc20018 sw v0,24(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
809 8c: 8e050000 lw a1,0(s0)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
810 90: 8e040004 lw a0,4(s0)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
811 94: 8e030008 lw v1,8(s0)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
812 98: 8e02000c lw v0,12(s0)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
813 9c: afc50000 sw a1,0(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
814 a0: afc40004 sw a0,4(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
815 a4: afc30008 sw v1,8(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
816 a8: afc2000c sw v0,12(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
817 ac: 03c0e821 move sp,s8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
818 b0: 8fbe0064 lw s8,100(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
819 b4: 8fb30060 lw s3,96(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
820 b8: 8fb2005c lw s2,92(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
821 bc: 8fb10058 lw s1,88(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
822 c0: 8fb00054 lw s0,84(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
823 c4: 27bd0068 addiu sp,sp,104
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
824 c8: 03e00008 jr ra
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
825 cc: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
826
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
827 000000d0 <nonleaf_call>:
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
828 d0: 27bdff30 addiu sp,sp,-208
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
829 d4: afbf00cc sw ra,204(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
830 d8: afbe00c8 sw s8,200(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
831 dc: afb300c4 sw s3,196(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
832 e0: afb200c0 sw s2,192(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
833 e4: afb100bc sw s1,188(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
834 e8: afb000b8 sw s0,184(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
835 ec: 03a0f021 move s8,sp
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
836 f0: afc400a8 sw a0,168(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
837 f4: afc500ac sw a1,172(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
838 f8: 00c09821 move s3,a2
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
839 fc: 00e08821 move s1,a3
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
840 100: afc800b0 sw t0,176(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
841 104: afc900b4 sw t1,180(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
842 108: 01409021 move s2,t2
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
843 10c: 01608021 move s0,t3
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
844 110: 8e640000 lw a0,0(s3)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
845 114: 8e630004 lw v1,4(s3)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
846 118: 8e620008 lw v0,8(s3)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
847 11c: afc40038 sw a0,56(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
848 120: afc3003c sw v1,60(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
849 124: afc20040 sw v0,64(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
850 128: 8e250000 lw a1,0(s1)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
851 12c: 8e240004 lw a0,4(s1)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
852 130: 8e230008 lw v1,8(s1)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
853 134: 8e22000c lw v0,12(s1)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
854 138: afc50028 sw a1,40(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
855 13c: afc4002c sw a0,44(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
856 140: afc30030 sw v1,48(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
857 144: afc20034 sw v0,52(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
858 148: 8e440000 lw a0,0(s2)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
859 14c: 8e430004 lw v1,4(s2)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
860 150: 8e420008 lw v0,8(s2)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
861 154: afc40018 sw a0,24(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
862 158: afc3001c sw v1,28(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
863 15c: afc20020 sw v0,32(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
864 160: 8e050000 lw a1,0(s0)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
865 164: 8e040004 lw a0,4(s0)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
866 168: 8e030008 lw v1,8(s0)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
867 16c: 8e02000c lw v0,12(s0)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
868 170: afc50008 sw a1,8(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
869 174: afc4000c sw a0,12(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
870 178: afc30010 sw v1,16(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
871 17c: afc20014 sw v0,20(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
872 180: 27c30044 addiu v1,s8,68
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
873 184: 24020064 li v0,100
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
874 188: 00602021 move a0,v1
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
875 18c: 00002821 move a1,zero
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
876 190: 00403021 move a2,v0
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
877 194: 0c000000 jal 0 <leaf_call>
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
878 198: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
879 19c: 2402004c li v0,76
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
880 1a0: a3c20044 sb v0,68(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
881 1a4: 27c50038 addiu a1,s8,56
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
882 1a8: 27c60028 addiu a2,s8,40
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
883 1ac: 27c30018 addiu v1,s8,24
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
884 1b0: 8fc200d4 lw v0,212(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
885 1b4: afa20000 sw v0,0(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
886 1b8: 8fc400ac lw a0,172(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
887 1bc: 8fc700b0 lw a3,176(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
888 1c0: 8fc800b4 lw t0,180(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
889 1c4: 00604821 move t1,v1
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
890 1c8: 27c20008 addiu v0,s8,8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
891 1cc: 00405021 move t2,v0
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
892 1d0: 8fcb00d0 lw t3,208(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
893 1d4: 0c000000 jal 0 <leaf_call>
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
894 1d8: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
895 1dc: 03c0e821 move sp,s8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
896 1e0: 8fbf00cc lw ra,204(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
897 1e4: 8fbe00c8 lw s8,200(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
898 1e8: 8fb300c4 lw s3,196(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
899 1ec: 8fb200c0 lw s2,192(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
900 1f0: 8fb100bc lw s1,188(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
901 1f4: 8fb000b8 lw s0,184(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
902 1f8: 27bd00d0 addiu sp,sp,208
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
903 1fc: 03e00008 jr ra
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
904 200: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
905
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
906 00000204 <main>:
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
907 204: 27bdffb0 addiu sp,sp,-80
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
908 208: afbf004c sw ra,76(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
909 20c: afbe0048 sw s8,72(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
910 210: 03a0f021 move s8,sp
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
911 214: 24020002 li v0,2
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
912 218: afc20038 sw v0,56(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
913 21c: 24020003 li v0,3
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
914 220: afc2003c sw v0,60(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
915 224: 8f820000 lw v0,0(gp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
916 228: afc20040 sw v0,64(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
917 22c: 8f820008 lw v0,8(gp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
918 230: 8f83000c lw v1,12(gp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
919 234: afc20028 sw v0,40(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
920 238: afc3002c sw v1,44(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
921 23c: 24020006 li v0,6
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
922 240: 00001821 move v1,zero
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
923 244: afc20030 sw v0,48(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
924 248: afc30034 sw v1,52(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
925 24c: 24020009 li v0,9
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
926 250: afc20018 sw v0,24(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
927 254: 2402000a li v0,10
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
928 258: afc2001c sw v0,28(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
929 25c: 8f820010 lw v0,16(gp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
930 260: afc20020 sw v0,32(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
931 264: 8f820018 lw v0,24(gp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
932 268: 8f83001c lw v1,28(gp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
933 26c: afc20008 sw v0,8(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
934 270: afc3000c sw v1,12(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
935 274: 2402000d li v0,13
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
936 278: 00001821 move v1,zero
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
937 27c: afc20010 sw v0,16(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
938 280: afc30014 sw v1,20(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
939 284: 27c60038 addiu a2,s8,56
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
940 288: 27c70028 addiu a3,s8,40
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
941 28c: 27c30018 addiu v1,s8,24
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
942 290: 2402000e li v0,14
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
943 294: afa20000 sw v0,0(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
944 298: 2402000f li v0,15
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
945 29c: afa20004 sw v0,4(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
946 2a0: 00002021 move a0,zero
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
947 2a4: 24050001 li a1,1
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
948 2a8: 24080007 li t0,7
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
949 2ac: 24090008 li t1,8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
950 2b0: 00605021 move t2,v1
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
951 2b4: 27c20008 addiu v0,s8,8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
952 2b8: 00405821 move t3,v0
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
953 2bc: 0c000000 jal 0 <leaf_call>
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
954 2c0: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
955 2c4: 00001021 move v0,zero
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
956 2c8: 03c0e821 move sp,s8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
957 2cc: 8fbf004c lw ra,76(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
958 2d0: 8fbe0048 lw s8,72(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
959 2d4: 27bd0050 addiu sp,sp,80
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
960 2d8: 03e00008 jr ra
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
961 2dc: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
962
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
963
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
964
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
965
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
966 ; ---------- returning structs by value ---------->
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
967 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
968 ; struct Small { char x; };
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
969 ; struct Big { long long i,j,k,l; long m; }; /* bigger than 16b */
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
970 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
971 ; struct Small f0()
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
972 ; {
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
973 ; struct Small s = { 132 };
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
974 ; return s;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
975 ; }
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
976 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
977 ; struct Big f1()
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
978 ; {
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
979 ; struct Big b = { 7171LL, 99LL, -99LL, -3102LL, 32 };
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
980 ; return b;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
981 ; }
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
982 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
983 ; int main()
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
984 ; {
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
985 ; struct Small s = f0();
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
986 ; struct Big b = f1();
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
987 ; return b.j + b.k + b.m + s.x;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
988 ; }
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
989
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
990
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
991
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
992 ; output from psptoolchain-20111215-psp w/ gcc 4.9.3
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
993
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
994 00000000 <f0>:
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
995 0: 27bdfff0 addiu sp,sp,-16
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
996 4: afbe000c sw s8,12(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
997 8: 03a0f021 move s8,sp
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
998 c: 2402ff84 li v0,-124
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
999 10: a3c20000 sb v0,0(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1000 14: 93c20000 lbu v0,0(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1001 18: 03c0e821 move sp,s8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1002 1c: 8fbe000c lw s8,12(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1003 20: 27bd0010 addiu sp,sp,16
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1004 24: 03e00008 jr ra
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1005 28: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1006
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1007 0000002c <f1>:
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1008 2c: 27bdffc8 addiu sp,sp,-56
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1009 30: afbf0034 sw ra,52(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1010 34: afbe0030 sw s8,48(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1011 38: 03a0f021 move s8,sp
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1012 3c: afc40028 sw a0,40(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1013 40: 3c020000 lui v0,0x0
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1014 44: 03c02021 move a0,s8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1015 48: 24430000 addiu v1,v0,0
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1016 4c: 24020028 li v0,40
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1017 50: 00602821 move a1,v1
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1018 54: 00403021 move a2,v0
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1019 58: 0c000000 jal 0 <f0>
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1020 5c: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1021 60: 8fc20028 lw v0,40(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1022 64: 00402021 move a0,v0
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1023 68: 03c01821 move v1,s8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1024 6c: 24020028 li v0,40
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1025 70: 00602821 move a1,v1
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1026 74: 00403021 move a2,v0
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1027 78: 0c000000 jal 0 <f0>
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1028 7c: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1029 80: 8fc20028 lw v0,40(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1030 84: 03c0e821 move sp,s8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1031 88: 8fbf0034 lw ra,52(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1032 8c: 8fbe0030 lw s8,48(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1033 90: 27bd0038 addiu sp,sp,56
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1034 94: 03e00008 jr ra
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1035 98: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1036
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1037 0000009c <main>:
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1038 9c: 27bdffc8 addiu sp,sp,-56
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1039 a0: afbf0034 sw ra,52(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1040 a4: afbe0030 sw s8,48(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1041 a8: 03a0f021 move s8,sp
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1042 ac: 0c000000 jal 0 <f0>
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1043 b0: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1044 b4: a3c20000 sb v0,0(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1045 b8: 27c20008 addiu v0,s8,8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1046 bc: 00402021 move a0,v0
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1047 c0: 0c000000 jal 0 <f0>
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1048 c4: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1049 c8: 8fc20010 lw v0,16(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1050 cc: 8fc30014 lw v1,20(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1051 d0: 00402021 move a0,v0
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1052 d4: 8fc20018 lw v0,24(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1053 d8: 8fc3001c lw v1,28(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1054 dc: 00821021 addu v0,a0,v0
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1055 e0: 8fc30028 lw v1,40(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1056 e4: 00431021 addu v0,v0,v1
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1057 e8: 83c30000 lb v1,0(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1058 ec: 00431021 addu v0,v0,v1
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1059 f0: 03c0e821 move sp,s8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1060 f4: 8fbf0034 lw ra,52(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1061 f8: 8fbe0030 lw s8,48(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1062 fc: 27bd0038 addiu sp,sp,56
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1063 100: 03e00008 jr ra
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1064 104: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1065
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1066
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1067
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1068 ; ---------- returning long long ---------->
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1069 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1070 ; long long f()
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1071 ; {
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1072 ; return 7171LL;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1073 ; }
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1074 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1075 ; int main()
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1076 ; {
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1077 ; return (int)f();
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1078 ; }
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1079
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1080
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1081
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1082 ; output from psptoolchain-20111215-psp w/ gcc 4.9.3
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1083
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1084 00000000 <f>:
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1085 0: 27bdfff8 addiu sp,sp,-8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1086 4: afbe0004 sw s8,4(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1087 8: 03a0f021 move s8,sp
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1088 c: 24021c03 li v0,7171
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1089 10: 00001821 move v1,zero
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1090 14: 03c0e821 move sp,s8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1091 18: 8fbe0004 lw s8,4(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1092 1c: 27bd0008 addiu sp,sp,8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1093 20: 03e00008 jr ra
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1094 24: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1095
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1096 00000028 <main>:
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1097 28: 27bdfff8 addiu sp,sp,-8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1098 2c: afbf0004 sw ra,4(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1099 30: afbe0000 sw s8,0(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1100 34: 03a0f021 move s8,sp
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1101 38: 0c000000 jal 0 <f>
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1102 3c: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1103 40: 03c0e821 move sp,s8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1104 44: 8fbf0004 lw ra,4(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1105 48: 8fbe0000 lw s8,0(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1106 4c: 27bd0008 addiu sp,sp,8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1107 50: 03e00008 jr ra
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1108 54: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1109
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1110
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1111
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1112 ; ---------- passing structs with only fp parts ---------->
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1113 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1114 ; struct A { float a; };
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1115 ; struct B { float a, b; };
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1116 ; struct C { float a, b, c; };
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1117 ; struct D { double a; };
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1118 ; struct E { double a, b; };
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1119 ; struct F { double a, b, c; };
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1120 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1121 ; void leaf_call(struct A a, struct B b, struct C c, struct D d, struct E e, struct F f)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1122 ; {
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1123 ; }
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1124 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1125 ; int main()
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1126 ; {
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1127 ; 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.});
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1128 ; return 0;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1129 ; }
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1130
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1131
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1132
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1133 ; output from psptoolchain-20111215-psp w/ gcc 4.9.3
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1134
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1135 00000000 <leaf_call>:
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1136 0: 27bdff98 addiu sp,sp,-104
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1137 4: afbe0064 sw s8,100(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1138 8: afb30060 sw s3,96(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1139 c: afb2005c sw s2,92(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1140 10: afb10058 sw s1,88(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1141 14: afb00054 sw s0,84(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1142 18: 03a0f021 move s8,sp
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1143 1c: e7cc0040 swc1 $f12,64(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1144 20: 00809821 move s3,a0
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1145 24: 00a09021 move s2,a1
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1146 28: afc60048 sw a2,72(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1147 2c: afc7004c sw a3,76(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1148 30: 01008821 move s1,t0
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1149 34: 01208021 move s0,t1
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1150 38: 8e630000 lw v1,0(s3)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1151 3c: 8e620004 lw v0,4(s3)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1152 40: afc30034 sw v1,52(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1153 44: afc20038 sw v0,56(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1154 48: 8e440000 lw a0,0(s2)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1155 4c: 8e430004 lw v1,4(s2)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1156 50: 8e420008 lw v0,8(s2)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1157 54: afc40028 sw a0,40(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1158 58: afc3002c sw v1,44(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1159 5c: afc20030 sw v0,48(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1160 60: 8e250000 lw a1,0(s1)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1161 64: 8e240004 lw a0,4(s1)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1162 68: 8e230008 lw v1,8(s1)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1163 6c: 8e22000c lw v0,12(s1)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1164 70: afc50018 sw a1,24(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1165 74: afc4001c sw a0,28(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1166 78: afc30020 sw v1,32(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1167 7c: afc20024 sw v0,36(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1168 80: 8e070000 lw a3,0(s0)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1169 84: 8e060004 lw a2,4(s0)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1170 88: 8e050008 lw a1,8(s0)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1171 8c: 8e04000c lw a0,12(s0)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1172 90: 8e030010 lw v1,16(s0)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1173 94: 8e020014 lw v0,20(s0)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1174 98: afc70000 sw a3,0(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1175 9c: afc60004 sw a2,4(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1176 a0: afc50008 sw a1,8(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1177 a4: afc4000c sw a0,12(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1178 a8: afc30010 sw v1,16(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1179 ac: afc20014 sw v0,20(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1180 b0: 03c0e821 move sp,s8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1181 b4: 8fbe0064 lw s8,100(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1182 b8: 8fb30060 lw s3,96(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1183 bc: 8fb2005c lw s2,92(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1184 c0: 8fb10058 lw s1,88(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1185 c4: 8fb00054 lw s0,84(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1186 c8: 27bd0068 addiu sp,sp,104
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1187 cc: 03e00008 jr ra
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1188 d0: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1189
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1190 000000d4 <main>:
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1191 d4: 27bdffb0 addiu sp,sp,-80
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1192 d8: afbf004c sw ra,76(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1193 dc: afbe0048 sw s8,72(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1194 e0: 03a0f021 move s8,sp
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1195 e4: 8f820000 lw v0,0(gp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1196 e8: afc20044 sw v0,68(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1197 ec: 8f820004 lw v0,4(gp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1198 f0: afc2003c sw v0,60(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1199 f4: 8f820008 lw v0,8(gp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1200 f8: afc20040 sw v0,64(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1201 fc: 8f82000c lw v0,12(gp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1202 100: afc20030 sw v0,48(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1203 104: 8f820010 lw v0,16(gp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1204 108: afc20034 sw v0,52(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1205 10c: 8f820014 lw v0,20(gp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1206 110: afc20038 sw v0,56(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1207 114: 8f820018 lw v0,24(gp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1208 118: 8f83001c lw v1,28(gp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1209 11c: afc20028 sw v0,40(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1210 120: afc3002c sw v1,44(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1211 124: 8f820020 lw v0,32(gp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1212 128: 8f830024 lw v1,36(gp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1213 12c: afc20018 sw v0,24(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1214 130: afc3001c sw v1,28(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1215 134: 8f820028 lw v0,40(gp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1216 138: 8f83002c lw v1,44(gp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1217 13c: afc20020 sw v0,32(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1218 140: afc30024 sw v1,36(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1219 144: 8f820030 lw v0,48(gp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1220 148: 8f830034 lw v1,52(gp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1221 14c: afc20000 sw v0,0(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1222 150: afc30004 sw v1,4(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1223 154: 8f820038 lw v0,56(gp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1224 158: 8f83003c lw v1,60(gp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1225 15c: afc20008 sw v0,8(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1226 160: afc3000c sw v1,12(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1227 164: 8f820040 lw v0,64(gp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1228 168: 8f830044 lw v1,68(gp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1229 16c: afc20010 sw v0,16(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1230 170: afc30014 sw v1,20(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1231 174: 27c4003c addiu a0,s8,60
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1232 178: 27c30030 addiu v1,s8,48
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1233 17c: 27c20018 addiu v0,s8,24
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1234 180: c7cc0044 lwc1 $f12,68(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1235 184: 00602821 move a1,v1
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1236 188: 8fc60028 lw a2,40(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1237 18c: 8fc7002c lw a3,44(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1238 190: 00404021 move t0,v0
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1239 194: 03c04821 move t1,s8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1240 198: 0c000000 jal 0 <leaf_call>
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1241 19c: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1242 1a0: 00001021 move v0,zero
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1243 1a4: 03c0e821 move sp,s8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1244 1a8: 8fbf004c lw ra,76(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1245 1ac: 8fbe0048 lw s8,72(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1246 1b0: 27bd0050 addiu sp,sp,80
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1247 1b4: 03e00008 jr ra
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1248 1b8: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1249
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1250
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1251
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1252 ; ---------- single-field structs by values (and small array fields) ---------->
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1253 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1254 ; struct C { char c; };
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1255 ; struct S { short s; };
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1256 ; struct I { int i; };
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1257 ; struct F { float f; };
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1258 ; struct D { double d; };
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1259 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1260 ; struct C2 { char c[2]; };
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1261 ; struct C3 { char c[3]; };
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1262 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1263 ; void leaf_call(struct C2 a, struct C b, struct S c, struct I d, struct F e, struct D f, struct C3 g)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1264 ; {
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1265 ; }
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1266 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1267 ; int main()
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1268 ; {
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1269 ; 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}});
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1270 ; return 0;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1271 ; }
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1272
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1273
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1274
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1275 ; output from psptoolchain-20111215-psp w/ gcc 4.9.3
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1276
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1277 00000000 <leaf_call>:
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1278 0: 27bdffd8 addiu sp,sp,-40
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1279 4: afbe0024 sw s8,36(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1280 8: 03a0f021 move s8,sp
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1281 c: a7c40000 sh a0,0(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1282 10: a3c50004 sb a1,4(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1283 14: a7c60008 sh a2,8(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1284 18: afc7000c sw a3,12(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1285 1c: e7cc0010 swc1 $f12,16(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1286 20: afc80018 sw t0,24(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1287 24: afc9001c sw t1,28(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1288 28: afca0014 sw t2,20(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1289 2c: 03c0e821 move sp,s8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1290 30: 8fbe0024 lw s8,36(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1291 34: 27bd0028 addiu sp,sp,40
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1292 38: 03e00008 jr ra
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1293 3c: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1294
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1295 00000040 <main>:
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1296 40: 27bdffd0 addiu sp,sp,-48
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1297 44: afbf002c sw ra,44(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1298 48: afbe0028 sw s8,40(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1299 4c: 03a0f021 move s8,sp
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1300 50: a3c00020 sb zero,32(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1301 54: 24020001 li v0,1
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1302 58: a3c20021 sb v0,33(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1303 5c: 24020002 li v0,2
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1304 60: a3c2001c sb v0,28(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1305 64: 24020003 li v0,3
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1306 68: a7c20018 sh v0,24(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1307 6c: 24020004 li v0,4
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1308 70: afc20014 sw v0,20(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1309 74: 8f820000 lw v0,0(gp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1310 78: afc20010 sw v0,16(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1311 7c: 8f820008 lw v0,8(gp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1312 80: 8f83000c lw v1,12(gp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1313 84: afc20008 sw v0,8(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1314 88: afc3000c sw v1,12(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1315 8c: 24020007 li v0,7
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1316 90: a3c20000 sb v0,0(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1317 94: 24020008 li v0,8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1318 98: a3c20001 sb v0,1(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1319 9c: 24020009 li v0,9
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1320 a0: a3c20002 sb v0,2(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1321 a4: 8fc40020 lw a0,32(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1322 a8: 93c5001c lbu a1,28(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1323 ac: 97c60018 lhu a2,24(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1324 b0: 8fc70014 lw a3,20(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1325 b4: c7cc0010 lwc1 $f12,16(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1326 b8: 8fc80008 lw t0,8(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1327 bc: 8fc9000c lw t1,12(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1328 c0: 8fca0000 lw t2,0(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1329 c4: 0c000000 jal 0 <leaf_call>
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1330 c8: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1331 cc: 00001021 move v0,zero
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1332 d0: 03c0e821 move sp,s8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1333 d4: 8fbf002c lw ra,44(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1334 d8: 8fbe0028 lw s8,40(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1335 dc: 27bd0030 addiu sp,sp,48
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1336 e0: 03e00008 jr ra
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1337 e4: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1338
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1339
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1340
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1341 ; ---------- C++ trivial and non-trivial aggrs passed to C funcs ---------->
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1342 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1343 ; struct Trivial { int a; };
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1344 ; struct NonTrivial { int a; NonTrivial() : a(0) {} NonTrivial(const NonTrivial& rhs) : a(rhs.a) { } };
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1345 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1346 ; extern "C" {
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1347 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1348 ; void f1(struct Trivial s) { }
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1349 ; void f2(struct NonTrivial s) { }
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1350 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1351 ; void f()
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1352 ; {
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1353 ; struct Trivial t;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1354 ; struct NonTrivial n;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1355 ; int a=1;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1356 ; a += 123;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1357 ; f1(t);
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1358 ; a -= 123;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1359 ; f2(n);
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1360 ; a -= 12;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1361 ; }
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1362 ; }
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1363
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1364
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1365
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1366 ; output from psptoolchain-20111215-psp w/ gcc 4.9.3
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1367
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1368 00000000 <f1>:
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1369 0: 27bdfff0 addiu sp,sp,-16
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1370 4: afbe000c sw s8,12(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1371 8: 03a0f021 move s8,sp
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1372 c: afc40000 sw a0,0(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1373 10: 03c0e821 move sp,s8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1374 14: 8fbe000c lw s8,12(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1375 18: 27bd0010 addiu sp,sp,16
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1376 1c: 03e00008 jr ra
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1377 20: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1378
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1379 00000024 <f2>:
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1380 24: 27bdfff0 addiu sp,sp,-16
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1381 28: afbe000c sw s8,12(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1382 2c: 03a0f021 move s8,sp
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1383 30: afc40000 sw a0,0(s8)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1384 34: 03c0e821 move sp,s8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1385 38: 8fbe000c lw s8,12(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1386 3c: 27bd0010 addiu sp,sp,16
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1387 40: 03e00008 jr ra
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1388 44: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1389
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1390 00000048 <f>:
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1391 48: 27bdffe8 addiu sp,sp,-24 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1392 4c: afbf0014 sw ra,20(sp) ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1393 50: afbe0010 sw s8,16(sp) ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1394 54: 03a0f021 move s8,sp ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1395 58: 27c2000c addiu v0,s8,12 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1396 5c: 00402021 move a0,v0 ; |
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1397 60: 0c000000 jal 0 <f1> ; | NonTrivial::NonTrivial() / ctor
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1398 64: 00000000 nop ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1399 68: 24020001 li v0,1 ; a = 1
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1400 6c: afc20000 sw v0,0(s8) ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1401 70: 8fc20000 lw v0,0(s8) ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1402 74: 2442007b addiu v0,v0,123 ; a += 123
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1403 78: afc20000 sw v0,0(s8) ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1404 7c: 8fc40008 lw a0,8(s8) ; |
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1405 80: 0c000000 jal 0 <f1> ; | call f1(struct Trivial)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1406 84: 00000000 nop ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1407 88: 8fc20000 lw v0,0(s8) ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1408 8c: 2442ff85 addiu v0,v0,-123 ; a -= 123
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1409 90: afc20000 sw v0,0(s8) ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1410 94: 27c30004 addiu v1,s8,4 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1411 98: 27c2000c addiu v0,s8,12 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1412 9c: 00602021 move a0,v1 ; | ptr to dest of copy of n
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1413 a0: 00402821 move a1,v0 ; | copy n ptr to n
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1414 a4: 0c000000 jal 0 <f1> ; | | NonTrivial::NonTrivial(const NonTrivial&) / copy ctor
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1415 a8: 00000000 nop ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1416 ac: 27c20004 addiu v0,s8,4 ; get ptr to copy of n -> v0
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1417 b0: 00402021 move a0,v0 ; f2 arg 0 (ptr to copy of struct NonTrivial), via ptr as non-trivial
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1418 b4: 0c000000 jal 0 <f1> ; call f2(struct NonTrivial)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1419 b8: 00000000 nop ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1420 bc: 8fc20000 lw v0,0(s8) ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1421 c0: 2442fff4 addiu v0,v0,-12 ; a -= 12
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1422 c4: afc20000 sw v0,0(s8) ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1423 c8: 03c0e821 move sp,s8 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1424 cc: 8fbf0014 lw ra,20(sp) ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1425 d0: 8fbe0010 lw s8,16(sp) ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1426 d4: 27bd0018 addiu sp,sp,24 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1427 d8: 03e00008 jr ra ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1428 dc: 00000000 nop ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1429
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1430 ; ... snip, removed code of ctor and copy ctor ...
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1431
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1432
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1433
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1434 ; ---------- C++ trivial and non-trivial aggrs as return values ---------->
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1435 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1436 ; struct Trivial { int a; };
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1437 ; struct NonTrivial { int a; NonTrivial() : a(0) {} NonTrivial(const NonTrivial& rhs) : a(rhs.a) { } };
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1438 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1439 ; extern "C" {
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1440 ; struct Trivial f1() { return Trivial(); }
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1441 ; }
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1442 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1443 ; struct NonTrivial f2() { return NonTrivial(); }
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1444 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1445 ; extern "C" {
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1446 ; void f()
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1447 ; {
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1448 ; int a=1;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1449 ; a += 123;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1450 ; struct Trivial t = f1();
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1451 ; a -= 123;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1452 ; struct NonTrivial n = f2();
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1453 ; a -= 12;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1454 ; }
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1455 ; }
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1456
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1457
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1458
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1459 ; output from psptoolchain-20111215-psp w/ gcc 4.9.3
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1460
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1461 00000000 <f1>:
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1462 0: 27bdfff8 addiu sp,sp,-8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1463 4: afbe0004 sw s8,4(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1464 8: 03a0f021 move s8,sp
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1465 c: 00001021 move v0,zero
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1466 10: 03c0e821 move sp,s8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1467 14: 8fbe0004 lw s8,4(sp)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1468 18: 27bd0008 addiu sp,sp,8
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1469 1c: 03e00008 jr ra
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1470 20: 00000000 nop
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1471
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1472 00000024 <_Z2f2v>:
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1473 24: 27bdfff0 addiu sp,sp,-16 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1474 28: afbf000c sw ra,12(sp) ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1475 2c: afbe0008 sw s8,8(sp) ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1476 30: 03a0f021 move s8,sp ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1477 34: afc40000 sw a0,0(s8) ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1478 38: 8fc40000 lw a0,0(s8) ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1479 3c: 0c000000 jal 0 <f1> ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1480 40: 00000000 nop ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1481 44: 8fc20000 lw v0,0(s8) ; retval, return (hidden) passed-in ptr to space for retval
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1482 48: 03c0e821 move sp,s8 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1483 4c: 8fbf000c lw ra,12(sp) ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1484 50: 8fbe0008 lw s8,8(sp) ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1485 54: 27bd0010 addiu sp,sp,16 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1486 58: 03e00008 jr ra ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1487 5c: 00000000 nop ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1488
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1489 00000060 <f>:
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1490 60: 27bdffe8 addiu sp,sp,-24 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1491 64: afbf0014 sw ra,20(sp) ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1492 68: afbe0010 sw s8,16(sp) ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1493 6c: 03a0f021 move s8,sp ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1494 70: 24020001 li v0,1 ; a = 1
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1495 74: afc20000 sw v0,0(s8) ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1496 78: 8fc20000 lw v0,0(s8) ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1497 7c: 2442007b addiu v0,v0,123 ; a += 123
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1498 80: afc20000 sw v0,0(s8) ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1499 84: 0c000000 jal 0 <f1> ; call f1(), struct returned via as trivial and <= 64bit
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1500 88: 00000000 nop ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1501 8c: afc20004 sw v0,4(s8) ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1502 90: 8fc20000 lw v0,0(s8) ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1503 94: 2442ff85 addiu v0,v0,-123 ; a -= 123
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1504 98: afc20000 sw v0,0(s8) ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1505 9c: 27c20008 addiu v0,s8,8 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1506 a0: 00402021 move a0,v0 ; hidden first arg (ptr to space for ret val)
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1507 a4: 0c000000 jal 0 <f1> ; call f2(), result returned indirectly as struct nontrivial
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1508 a8: 00000000 nop ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1509 ac: 8fc20000 lw v0,0(s8) ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1510 b0: 2442fff4 addiu v0,v0,-12 ; a -= 12
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1511 b4: afc20000 sw v0,0(s8) ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1512 b8: 03c0e821 move sp,s8 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1513 bc: 8fbf0014 lw ra,20(sp) ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1514 c0: 8fbe0010 lw s8,16(sp) ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1515 c4: 27bd0018 addiu sp,sp,24 ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1516 c8: 03e00008 jr ra ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1517 cc: 00000000 nop ;
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1518
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1519 ; ... snip, removed code of ctor ...
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1520
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1521
fe694c7677b4 - mips eabi doc disas examples
Tassilo Philipp
parents: 361
diff changeset
1522
327
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
1523 ; vim: ft=asm
c0390dc85a07 - doc: added disassembly examples for many platforms and calling conventions, for reference
Tassilo Philipp
parents:
diff changeset
1524