1
0
mirror of https://github.com/chai2010/advanced-go-programming-book.git synced 2025-05-24 04:22:22 +00:00
advanced-go-programming-book/images/ch3-func-local-var-01.ditaa.txt
2018-06-23 07:56:42 +08:00

55 lines
4.3 KiB
Plaintext

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 |
+----------+