mirror of
https://github.com/chai2010/advanced-go-programming-book.git
synced 2025-05-24 04:22:22 +00:00
52 lines
2.5 KiB
Plaintext
52 lines
2.5 KiB
Plaintext
function call frame
|
|
|
|
+----------+<-=-g.stack.hi
|
|
| stack |
|
|
| cRED | func main()
|
|
| | main frame
|
|
+----------+<-=-----+----------+
|
|
| main | | cGRE |
|
|
| cGRE | | local | func printsum(a, b int)
|
|
| | | | printsum frame
|
|
| | +----------+ +----------+
|
|
| | | | : |
|
|
| | | +8(SP) |----=--->| b+8(FP) |
|
|
| call | +8(SP)| cPNK | arg b | cGRE |b+8(FP)
|
|
| printsum | +----------+ +----------+
|
|
| | | | : |
|
|
| | | +0(SP) |----=--->| a+0(FP) |
|
|
| | +0(SP)| cPNK | arg a | cGRE |a+0(FP)
|
|
+----------+<-=-----+----------+<-=------+----------+
|
|
| printsum | | |
|
|
| cYEL | |var c int | func sum(a, b int) int
|
|
| | | cYEL |c-8(SP) sum frame
|
|
| | +----------+ +----------+
|
|
| call sum | | | : |
|
|
| | | sum.ret |<----=---|ret+24(FP)|
|
|
| | +16(SP)| cPNK | return | |ret+16(FP)
|
|
| | +----------+ +----------+
|
|
| | | | : |
|
|
| | | sum.b |-----=-->| b+8(FP) |
|
|
| | +8(SP)| cPNK | arg b | |b+8(FP)
|
|
| | +----------+ +----------+
|
|
| | | | : |
|
|
| | | sum.a |-----=-->| a+0(FP) |
|
|
| | +0(SP)| cPNK | arg a | |a+0(FP)
|
|
+----------+<-=--------------------------+----------+<-=------+----------+
|
|
| func sum | | cBLU |t-8(SP)
|
|
| cBLU | | local |
|
|
| ret a+b | | |
|
|
+----------+<-=-----------------------------------------------+----------++0(SP)
|
|
| cAAA |+0(SP)
|
|
| unused |
|
|
| |
|
|
| |
|
|
| |
|
|
| |
|
|
+----------+<-=-g.stack.lo
|
|
| cRED |
|
|
|StackLimit|
|
|
|StackGuard|
|
|
+----------+
|
|
|