NOTHING

好读码,不求甚解;每有会意,便欣然忘食。
HOME GITHUB

GO调度:part Ⅰ - OS 调度器

翻译自 https://www.ardanlabs.com/blog/2018/08/scheduling-in-go-part1.html 序言 这是三篇系列文章中的第一篇,这个系列文章会提供对GO调度器语义背后的理解,这篇文章着重于OS调度器 文章系列索引: 1)Scheduling In Go : Part I - OS Scheduler

20 Sep 2020

go 中的 Monkey Patching

翻译自 https://bou.ke/blog/monkey-patching-in-go/ 很多人认为 monkey Patching 只能在动态语言中,像 Ruby 和 Python,但是并不是这样,计算机是一种愚蠢的机器, 我们始终能让他做我们所想的事情!让我们看下Go函数是如何工作的,以及如何在运行时修改它。这篇文章会使用大量的 intel 汇编, 所以我假设你已经掌握,或者在阅读时会参考查阅相关资料。

5 Sep 2020

panic and recover 源码阅读

事情起因是因为上班无聊水群(此处领导不可见),发现群里有小伙伴提了个关于 recover 捕获 panic 的问题 代码1: func main() { defer recover_func() panic("panic") } func recover_func() { func() { err := recover() if err !

29 Aug 2020

defer 源码阅读 (go 1.13)

直接上代码 package main import "fmt" func main() { defer func() { fmt.

29 Aug 2020

Golang 获取 IP 寄存器内容

之前用C写过一个调度器,想用Go也写一次,正好最近在学习Plan9汇编,趁机巩固一下。 先理清楚基本思路。因为不能直接对IP寄存器做操作,所以无法直接通过 MOVQ IP,AX 这种方式得到IP的值。 但是总所周知,CALL 指令等价于 PUSH IP ,jmp XXX 。所以我们可以通过CALL指令过通过SP寄存器拿到IP的值。

27 Aug 2020