forked from withlin/advanced-go-programming-book
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathch3-11-func-local-var-01.ditaa.txt
54 lines (52 loc) · 4.34 KB
/
ch3-11-func-local-var-01.ditaa.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
function local variables
+----------+ +---------------+ +--------------------+
| | | | | |
| cRED | a-32(SP) +-------| var a bool |<--------=->| var a bool |
| | | | cBLU | | cBLU |
| | | +---------------+ +--------------------+
| | | | | | |
| | b-30(SP) +-------| var b int16 |<--------=->| var b int16 |
| | : | cPNK | | cPNK |
| | | +---------------+ +--------------------+
| | | | | | |
| | | | var c []byte |<-----+--=->| var c.Data uintptr |----+
| | | | cGRE | | | cGRE | |
| stack | | +---------------+ | +--------------------+ |
| | | | | | |
| | | +--=->| var c.Len int |----+
| | | | | cGRE | |
| | | | +--------------------+ |
| | | | | | |
| | | +--=->| var c.Cap int |--==+
---=- +----------+ | | cGRE | |
^ | | | +--------------------+ |
: | | | |
| | arguments| | |
argsize| returns | | |
: | | | local_top-0(SP)---=-+ |
v | cYEL |arg+0(FP) | | |
--=-- +----------+ <----------=--- +-------------------------------------+ <-+ |
^ | cGRE |var-0(SP) | | cGRE | |
: | local | | | c.Cap | |
| | | | | 64bit | |
| | | | +-------------------------------------+ <-=-------------+c.Cap-8(SP)
| | | | | cGRE | |
| | | | | c.Len | |
| | | | | 64bit | |
| | | | +-------------------------------------+ <-=-------------+c.Len-16(SP)
| | | | | cGRE | |
framesize| | | | c.Data | |
| | | | | 64bit | |
| | | | +----+----+--------+------------------+ <-=-------------+c.Data-24(SP)
| | | : |cBLU|cAAA|cPNK |cAAA |
| | | +----> | a | | b | |
| | | |8bit|8bit| 16bit | 32bit |
| +----------+ <----------=--- +----+----+--------+------------------+ <--=a-32(SP)
| |for callee| var-32(SP) ^ ^
| | | | | |
: | | | | +-=-b-30(SP)
v |cPNK v | |
-=-- +----------+0(SP) +-=-a-32(SP)
| unused |
| cAAA |
+----------+