Golang协程栈概述
发布时间:2023-01-12 编辑:jiaochengji.com
教程集为您提供Golang协程栈概述等资源,欢迎您收藏本站,我们将为您提供最新的Golang协程栈概述资源
说明
计算机中的栈一个很大的应用场合使用在函数调用中。我们这里简单说说golang的协程栈布局,学过计算机的应该都不会陌生。
程序事例
package main
func f(a, b int) int {
sum := 0
sum = a b
for i := 0; i < 1000; i {
println("sum is:", sum)
}
return sum
}
func main() {
f(1, 2)
}
汇编代码
(gdb) disas
Dump of assembler code for function main.main:
0x00000000004010b0 <main.main 0>: mov %fs:0xfffffffffffffff8,%rcx
0x00000000004010b9 <main.main 9>: cmp 0x10(%rcx),%rsp
0x00000000004010bd <main.main 13>: jbe 0x4010de <main.main 46>
0x00000000004010bf <main.main 15>: sub $0x18,%rsp
0x00000000004010c3 <main.main 19>: movq $0x1,(%rsp)
0x00000000004010cb <main.main 27>: movq $0x2,0x8(%rsp)
0x00000000004010d4 <main.main 36>: callq 0x401000 <main.f>
0x00000000004010d9 <main.main 41>: add $0x18,%rsp
0x00000000004010dd <main.main 45>: retq
0x00000000004010de <main.main 46>: callq 0x44abd0 <runtime.morestack_noctxt>
0x00000000004010e3 <main.main 51>: jmp 0x4010b0 <main.main>
0x00000000004010e5 <main.main 53>: add %al,(%rax)
0x00000000004010e7 <main.main 55>: add %al,(%rax)
0x00000000004010e9 <main.main 57>: add %al,(%rax)
0x00000000004010eb <main.main 59>: add %al,(%rax)
0x00000000004010ed <main.main 61>: add %al,(%rax)
0x00000000004010ef <main.main 63>: add %ah,-0x75(%rax,%rcx,2)
End of assembler dump.
(gdb) disas
Dump of assembler code for function main.f:
0x0000000000401000 <main.f 0>: mov %fs:0xfffffffffffffff8,%rcx
0x0000000000401009 <main.f 9>: cmp 0x10(%rcx),%rsp
0x000000000040100d <main.f 13>: jbe 0x401097 <main.f 151>
0x0000000000401013 <main.f 19>: sub $0x20,%rsp
0x0000000000401017 <main.f 23>: mov 0x28(%rsp),%rbx
0x000000000040101c <main.f 28>: mov 0x30(%rsp),%rbp
0x0000000000401021 <main.f 33>: add %rbp,%rbx
0x0000000000401024 <main.f 36>: mov %rbx,0x10(%rsp)
0x0000000000401029 <main.f 41>: xor 您可能感兴趣的文章:
探索Golang协程实现——从v1.0开始
golang为什么用协程而不是线程
golang float32转float64精度丢失_golang 混合写屏障原理深入剖析,这篇文章给你梳理的明明白白!...
golang的协程原理
Golang协程原理(一)
go 协程
Golang教程:goroutine协程
golang 反射_golang 内存管理分析
golang经典面试问题汇总
golang学习笔记(二)—— 深入golang中的协程
上一篇:GO语言下载、安装、配置
下一篇:golang调度模型
[关闭]