在一般的用戶線程上下文切換實現(xiàn)(like setjmp/longjmpand the function returnway)中,我們保存和恢復(fù)被調(diào)用者保存的寄存器,但golang只保存和恢復(fù)%rsp,%rip并且%rbp在gobuf中。以 x86_64 為例,golang 用 runtime.gosave 保存 goroutine 上下文,用runtime.gogo恢復(fù)goroutine 上下文。那么為什么golang會這樣呢?
為什么 Golang 在切換上下文時只保存 %rsp、%rip 和 %rbp?
拉風(fēng)的咖菲貓
2022-05-18 09:40:51