From d7850c2d876828900f1ebc7ed047c0aeba65abc2 Mon Sep 17 00:00:00 2001 From: chai2010 Date: Fri, 12 Jan 2018 01:25:38 +0800 Subject: [PATCH 01/19] =?UTF-8?q?ch2-07:=20=E6=94=B9=E8=BF=9B=E4=BE=8B?= =?UTF-8?q?=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/ch2-07/hello-py/Makefile | 12 ++--- examples/ch2-07/hello-py/gopkg.h | 41 +++++++---------- examples/ch2-07/hello-py/main.go | 62 ++++++++++---------------- examples/ch2-07/hello-py/py3-config.go | 34 ++++++++++++++ 4 files changed, 76 insertions(+), 73 deletions(-) create mode 100644 examples/ch2-07/hello-py/py3-config.go diff --git a/examples/ch2-07/hello-py/Makefile b/examples/ch2-07/hello-py/Makefile index bb54aa2..d224e8d 100644 --- a/examples/ch2-07/hello-py/Makefile +++ b/examples/ch2-07/hello-py/Makefile @@ -2,14 +2,10 @@ # License: https://creativecommons.org/licenses/by-nc-sa/4.0/ default: - go build -buildmode=c-shared -o gopkg.so main.go - python3 -c 'import gopkg; print(gopkg.system("time"))' - python3 -c 'import gopkg; print(gopkg.sum(2, 3))' + go build -o py3-config.out py3-config.go + PKG_CONFIG=./py3-config.out go build -buildmode=c-shared -o gopkg.so main.go + -rm py3-config.out + python3 -c 'import gopkg; print(gopkg.sum(1, 2))' clean: -rm *.so - -# PKG_CONFIG=python3-config go build -buildmode=c-shared -o say-hello.so main.go -# python3-config --ldflags -# python3-config --include - diff --git a/examples/ch2-07/hello-py/gopkg.h b/examples/ch2-07/hello-py/gopkg.h index a5f4a5a..68ac6e6 100644 --- a/examples/ch2-07/hello-py/gopkg.h +++ b/examples/ch2-07/hello-py/gopkg.h @@ -5,12 +5,9 @@ /* Start of preamble from import "C" comments. */ -#line 3 "/Users/chai/go/src/github.com/chai2010/advanced-go-programming-book/examples/ch2-07/hello-py/main.go" +#line 6 "/Users/chai/go/src/github.com/chai2010/advanced-go-programming-book/examples/ch2-07/hello-py/main.go" // macOS: -// python3-config --cflags -// python3-config --ldflags - // linux @@ -22,30 +19,22 @@ #define Py_LIMITED_API #include -static PyObject * -spam_system(PyObject *self, PyObject *args) { - const char *command; - if (!PyArg_ParseTuple(args, "s", &command)) { - return NULL; - } +extern PyObject* PyInit_gopkg(); +extern PyObject* Py_gopkg_sum(PyObject *, PyObject *); - int status = system(command); - return PyLong_FromLong(status); +static int cgo_PyArg_ParseTuple_ii(PyObject *arg, int *a, int *b) { + return PyArg_ParseTuple(arg, "ii", a, b); } -extern PyObject *sum(PyObject *self, PyObject *args); - -static PyMethodDef modMethods[] = { - {"system", spam_system, METH_VARARGS, "Execute a shell command."}, - {"sum", sum, METH_VARARGS, "Execute a shell command."}, - {NULL, NULL, 0, NULL} -}; - -static PyObject* PyInit_gopkg_(void) { - static struct PyModuleDef module = { - PyModuleDef_HEAD_INIT, "gopkg", NULL, -1, modMethods, +static PyObject* cgo_PyInit_gopkg(void) { + static PyMethodDef methods[] = { + {"sum", Py_gopkg_sum, METH_VARARGS, "Add two numbers."}, + {NULL, NULL, 0, NULL}, }; - return (void*)PyModule_Create(&module); + static struct PyModuleDef module = { + PyModuleDef_HEAD_INIT, "gopkg", NULL, -1, methods, + }; + return PyModule_Create(&module); } #line 1 "cgo-generated-wrapper" @@ -97,10 +86,10 @@ extern "C" { #endif -extern PyObject* sum(PyObject* p0, PyObject* p1); - extern PyObject* PyInit_gopkg(); +extern PyObject* Py_gopkg_sum(PyObject* p0, PyObject* p1); + #ifdef __cplusplus } #endif diff --git a/examples/ch2-07/hello-py/main.go b/examples/ch2-07/hello-py/main.go index 81c3d3a..9262704 100644 --- a/examples/ch2-07/hello-py/main.go +++ b/examples/ch2-07/hello-py/main.go @@ -5,10 +5,7 @@ package main /* // macOS: -// python3-config --cflags -// python3-config --ldflags -#cgo darwin CFLAGS: -I/Library/Frameworks/Python.framework/Versions/3.6/include/python3.6m -I/Library/Frameworks/Python.framework/Versions/3.6/include/python3.6m -fno-strict-aliasing -Wsign-compare -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -g -#cgo darwin LDFLAGS: -L/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/config-3.6m-darwin -lpython3.6m -ldl -framework CoreFoundation +#cgo darwin pkg-config: python3 // linux #cgo linux pkg-config: python3 @@ -19,51 +16,38 @@ package main #define Py_LIMITED_API #include -static PyObject * -spam_system(PyObject *self, PyObject *args) { - const char *command; - if (!PyArg_ParseTuple(args, "s", &command)) { - return NULL; - } +extern PyObject* PyInit_gopkg(); +extern PyObject* Py_gopkg_sum(PyObject *, PyObject *); - int status = system(command); - return PyLong_FromLong(status); +static int cgo_PyArg_ParseTuple_ii(PyObject *arg, int *a, int *b) { + return PyArg_ParseTuple(arg, "ii", a, b); } -extern PyObject *sum(PyObject *self, PyObject *args); - -static PyMethodDef modMethods[] = { - {"system", spam_system, METH_VARARGS, "Execute a shell command."}, - {"sum", sum, METH_VARARGS, "Execute a shell command."}, - {NULL, NULL, 0, NULL} -}; - -static PyObject* PyInit_gopkg_(void) { - static struct PyModuleDef module = { - PyModuleDef_HEAD_INIT, "gopkg", NULL, -1, modMethods, +static PyObject* cgo_PyInit_gopkg(void) { + static PyMethodDef methods[] = { + {"sum", Py_gopkg_sum, METH_VARARGS, "Add two numbers."}, + {NULL, NULL, 0, NULL}, }; - return (void*)PyModule_Create(&module); + static struct PyModuleDef module = { + PyModuleDef_HEAD_INIT, "gopkg", NULL, -1, methods, + }; + return PyModule_Create(&module); } */ import "C" -import ( - "fmt" -) - func main() {} -// export SayHello -func SayHello(name *C.char) { - fmt.Printf("hello %s!\n", C.GoString(name)) -} - -//export sum -func sum(self, args *C.PyObject) *C.PyObject { - return C.PyLong_FromLongLong(9527) // TODO -} - //export PyInit_gopkg func PyInit_gopkg() *C.PyObject { - return C.PyInit_gopkg_() + return C.cgo_PyInit_gopkg() +} + +//export Py_gopkg_sum +func Py_gopkg_sum(self, args *C.PyObject) *C.PyObject { + var a, b C.int + if C.cgo_PyArg_ParseTuple_ii(args, &a, &b) == 0 { + return nil + } + return C.PyLong_FromLong(C.long(a + b)) } diff --git a/examples/ch2-07/hello-py/py3-config.go b/examples/ch2-07/hello-py/py3-config.go new file mode 100644 index 0000000..64cdbbe --- /dev/null +++ b/examples/ch2-07/hello-py/py3-config.go @@ -0,0 +1,34 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +// +build ignore +// +build darwin + +// fix python3-config for cgo build + +package main + +import ( + "bytes" + "fmt" + "os" + "os/exec" +) + +func main() { + for _, s := range os.Args { + if s == "--cflags" { + out, _ := exec.Command("python3-config", "--cflags").CombinedOutput() + out = bytes.Replace(out, []byte("-arch"), []byte{}, -1) + out = bytes.Replace(out, []byte("i386"), []byte{}, -1) + out = bytes.Replace(out, []byte("x86_64"), []byte{}, -1) + fmt.Print(string(out)) + return + } + if s == "--libs" { + out, _ := exec.Command("python3-config", "--ldflags").CombinedOutput() + fmt.Print(string(out)) + return + } + } +} From 99a0821f50f47fc52f705daac510115816967a3c Mon Sep 17 00:00:00 2001 From: chai2010 Date: Fri, 12 Jan 2018 02:51:00 +0800 Subject: [PATCH 02/19] =?UTF-8?q?ch2-07:=20=E5=88=9D=E7=A8=BF=E5=AE=8C?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SUMMARY.md | 2 +- ch2-cgo/ch2-07-py-module.md | 161 ++++++++++++++++++++++++++++-- examples/ch2-07/hello-so/hello.py | 8 +- 3 files changed, 159 insertions(+), 12 deletions(-) diff --git a/SUMMARY.md b/SUMMARY.md index 5f99734..8b66e98 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -16,7 +16,7 @@ * [2.4. CGO内存模型](ch2-cgo/ch2-04-memory.md) * [2.5. C++类包装](ch2-cgo/ch2-05-class.md) * [2.6. 静态库和动态库](ch2-cgo/ch2-06-static-shared-lib.md) - * [2.7. Go实现Python模块(TODO)](ch2-cgo/ch2-07-py-module.md) + * [2.7. Go实现Python模块](ch2-cgo/ch2-07-py-module.md) * [2.8. SWIG(TODO)](ch2-cgo/ch2-08-swig.md) * [2.9. 补充说明(TODO)](ch2-cgo/ch2-09-faq.md) * [第三章 汇编语言](ch3-asm/readme.md) diff --git a/ch2-cgo/ch2-07-py-module.md b/ch2-cgo/ch2-07-py-module.md index 086c1c3..1b1b55c 100644 --- a/ch2-cgo/ch2-07-py-module.md +++ b/ch2-cgo/ch2-07-py-module.md @@ -1,11 +1,158 @@ -# 2.7 Go实现Python模块(TODO) +# 2.7 Go实现Python模块 -TODO +前面章节我们已经讲述了如何通过CGO来引用和创建C动态库和静态库。实现了对C动态库和静态库的支持,理论上就可以应用到动态库的绝大部分场景。Python语言作为当下最红的语言,本节我们将演示如何通过Go语言来为Python脚本语言编写扩展模块。 - +我们使用的是之前出现过的例子: + +```go +// main.go +package main + +import "C" +import "fmt" + +func main() {} + +//export SayHello +func SayHello(name *C.char) { + fmt.Printf("hello %s!\n", C.GoString(name)) +} +``` + +其中只导出了一个SayHello函数,用于打印字符串。通过以下命令基于上述Go代码创建say-hello.so动态库: + +``` +go build -buildmode=c-shared -o say-hello.so main.go +``` + +现在我们就可以通过ctypes模块调用say-hello.so动态库中的SayHello函数了: + +```python +// hello.py +import ctypes + +libso = ctypes.CDLL("./say-hello.so") + +SayHello = libso.SayHello +SayHello.argtypes = [ctypes.c_char_p] +SayHello.restype = None + +SayHello(ctypes.c_char_p(b"hello")) +``` + +我们首先通过ctypes.CDLL加载动态库到libso,并通过libso.SayHello来获取SayHello函数。获取到SayHello函数之后设置函数的输入参数为一个C语言类型的字符串,该函数没有返回值。然后我们通过`ctypes.c_char_p(b"hello")`将Python字节串转为C语言格式的字符串作为参数调用SayHello。如果一切正常的话就可以输出字符串了。 + +从这个例子可以看出,给予ctypes构造Python扩展模块非常简单,本质上只是在构建一个纯C语言规格的动态库。比较复杂的部分在ctypes的具体使用,关于ctypes的具体细节就不详细展开的,用户可以自行参考Python自带的官方文档。 + +## 基于Python C接口创建 + +在前面的例子中,通过ctypes创建的模块必须要用Python再包装一层,否则就要直接面对C语言风格的接口。如果基于基于Python C接口,我们可以完全再Go和C语言层面创建灵活强大的模块,重点是不再需要在Python中重新包装。 + +基于Python C接口创建模块和使用C语言的静态库的流程类似: + +``` +package main + +/* +// macOS: +#cgo darwin pkg-config: python3 + +// linux +#cgo linux pkg-config: python3 + +// windows +// should generate libpython3.a from python3.lib + +#define Py_LIMITED_API +#include + +extern PyObject* PyInit_gopkg(); +extern PyObject* Py_gopkg_sum(PyObject *, PyObject *); + +static int cgo_PyArg_ParseTuple_ii(PyObject *arg, int *a, int *b) { + return PyArg_ParseTuple(arg, "ii", a, b); +} + +static PyObject* cgo_PyInit_gopkg(void) { + static PyMethodDef methods[] = { + {"sum", Py_gopkg_sum, METH_VARARGS, "Add two numbers."}, + {NULL, NULL, 0, NULL}, + }; + static struct PyModuleDef module = { + PyModuleDef_HEAD_INIT, "gopkg", NULL, -1, methods, + }; + return PyModule_Create(&module); +} +*/ +import "C" + +func main() {} + +//export PyInit_gopkg +func PyInit_gopkg() *C.PyObject { + return C.cgo_PyInit_gopkg() +} + +//export Py_gopkg_sum +func Py_gopkg_sum(self, args *C.PyObject) *C.PyObject { + var a, b C.int + if C.cgo_PyArg_ParseTuple_ii(args, &a, &b) == 0 { + return nil + } + return C.PyLong_FromLong(C.long(a + b)) +} +``` + +因为Python的链接参数要复杂了很多,我们借助pkg-config工具来获取编译参数和链接参数。然后我们在Go语言中分别导出了PyInit_gopkg和Py_gopkg_sum函数,其中PyInit_gopkg函数用于初始化名为gopkg的Python模块,而Py_gopkg_sum函数则是模块中sum方法的实现。 + +因此PyArg_ParseTuple是可变参数类型,CGO中无法使用可变参数的C函数,因此我们通过增加一个cgo_PyArg_ParseTuple_ii辅助函数小消除可变参数的影响。同样,模块的方法列表必须在C语言内存空间创建,因为CGO是禁止将Go语言内存直接返回到C语言空间的。 + +然后通过以下命令创建gopkg.so动态库: + +``` +go build -buildmode=c-shared -o gopkg.so main.go +``` + +这里需要注意几个出现gopkg名字的地方。gopkg是我们创建的Python模块的名字,因此它对应一个gopkg.so动态库。再gopkg.so动态库中必须有一个PyInit_gopkg函数,该函数是模块的初始化函数。在PyInit_gopkg函数初始化模块时,同样需要指定模块的名字时gopkg。模块中的方法函数是通过函数指针访问,具体的名字没有影响。 + +### macOS环境构建 + +因为在macOS中,pkg-config不支持Python3版本。不过macOS有一个python3-config的命令可以实现pkg-config类似的功能。不过python3-config生成的编译参数无法直接用于CGO编译选项(因为GCC不能识别部分参数会导致错误构建)。 + +我们在python3-config的基础只是又包装了一个工具,在通过python3-config获取到编译参数之后将GCC不支持的参数剔除掉。 + +创建py3-config.go文件: + +```go +func main() { + for _, s := range os.Args { + if s == "--cflags" { + out, _ := exec.Command("python3-config", "--cflags").CombinedOutput() + out = bytes.Replace(out, []byte("-arch"), []byte{}, -1) + out = bytes.Replace(out, []byte("i386"), []byte{}, -1) + out = bytes.Replace(out, []byte("x86_64"), []byte{}, -1) + fmt.Print(string(out)) + return + } + if s == "--libs" { + out, _ := exec.Command("python3-config", "--ldflags").CombinedOutput() + fmt.Print(string(out)) + return + } + } +} +``` + +cgo中的pkg-config只需要两个参数`--cflags`和`--libs`。其中`--libs`选项的输出我们采用的是`python3-config --ldflags`的输出,因为`--libs`选项没有包含库的检索路径,而`--ldflags`选项则是在指定链接库参数的基础上增加了库的检索路径。 + +基于py3-config.go可以创建一个py3-config命令。然后通过PKG_CONFIG环境变量将cgo使用的pkg-config命令指定为我们订制的命令: + +``` +PKG_CONFIG=./py3-config go build -buildmode=c-shared -o gopkg.so main.go +``` + +对于不支持pkg-config的平台我们都可以基于类似的方法处理。 diff --git a/examples/ch2-07/hello-so/hello.py b/examples/ch2-07/hello-so/hello.py index cf99d7b..5cd267f 100644 --- a/examples/ch2-07/hello-so/hello.py +++ b/examples/ch2-07/hello-so/hello.py @@ -1,12 +1,12 @@ # Copyright © 2017 ChaiShushan . # License: https://creativecommons.org/licenses/by-nc-sa/4.0/ -from ctypes import * +import ctypes -libso = CDLL("./say-hello.so") +libso = ctypes.CDLL("./say-hello.so") SayHello = libso.SayHello -SayHello.argtypes = [c_char_p] +SayHello.argtypes = [ctypes.c_char_p] SayHello.restype = None -SayHello(c_char_p(b"hello")) +SayHello(ctypes.c_char_p(b"hello")) From d4c8463fb07378fb7e350d245723d4d20f934967 Mon Sep 17 00:00:00 2001 From: chai2010 Date: Thu, 11 Jan 2018 06:35:00 +0800 Subject: [PATCH 03/19] =?UTF-8?q?ch2=20=E5=AE=8C=E7=BB=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SUMMARY.md | 3 +-- ch2-cgo/ch2-08-faq.md | 4 ++++ ch2-cgo/ch2-08-swig.md | 7 ------- ch2-cgo/ch2-09-faq.md | 11 ----------- 4 files changed, 5 insertions(+), 20 deletions(-) create mode 100644 ch2-cgo/ch2-08-faq.md delete mode 100644 ch2-cgo/ch2-08-swig.md delete mode 100644 ch2-cgo/ch2-09-faq.md diff --git a/SUMMARY.md b/SUMMARY.md index 8b66e98..4f1e05e 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -17,8 +17,7 @@ * [2.5. C++类包装](ch2-cgo/ch2-05-class.md) * [2.6. 静态库和动态库](ch2-cgo/ch2-06-static-shared-lib.md) * [2.7. Go实现Python模块](ch2-cgo/ch2-07-py-module.md) - * [2.8. SWIG(TODO)](ch2-cgo/ch2-08-swig.md) - * [2.9. 补充说明(TODO)](ch2-cgo/ch2-09-faq.md) + * [2.8. 补充说明](ch2-cgo/ch2-08-faq.md) * [第三章 汇编语言](ch3-asm/readme.md) * [第四章 移动平台](ch4-mobile/readme.md) * [第六章 Go和Web](ch6-web/readme.md) diff --git a/ch2-cgo/ch2-08-faq.md b/ch2-cgo/ch2-08-faq.md new file mode 100644 index 0000000..feb086d --- /dev/null +++ b/ch2-cgo/ch2-08-faq.md @@ -0,0 +1,4 @@ +# 2.8. 补充说明 + +本章讨论了CGO的一些常见用法,并给出相关的例子。关于CGO有几点补充:如果有纯Go的解决方法就不要使用CGO;CGO中涉及的C和C++构建问题非常繁琐;CGO有一定的限制无法实现解决全部的问题;不要试图越过CGO的一些限制。而且CGO只是一种官方提供并推荐的Go语言和C/C++交互的方法。如果是使用的gccgo的版本,可以通过gccgo的方式实现Go和C/C++的交互。同时SWIG也是一种选择,并对C++诸多特性提供了支持。 + diff --git a/ch2-cgo/ch2-08-swig.md b/ch2-cgo/ch2-08-swig.md deleted file mode 100644 index fa74b72..0000000 --- a/ch2-cgo/ch2-08-swig.md +++ /dev/null @@ -1,7 +0,0 @@ -# 2.8. SWIG(TODO) - -TODO - - diff --git a/ch2-cgo/ch2-09-faq.md b/ch2-cgo/ch2-09-faq.md deleted file mode 100644 index 264511a..0000000 --- a/ch2-cgo/ch2-09-faq.md +++ /dev/null @@ -1,11 +0,0 @@ -# 2.9. 补充说明(TODO) - -TODO - - From ef944c68feb3c261829c03bad7ecdb0059ee4be9 Mon Sep 17 00:00:00 2001 From: chai2010 Date: Fri, 12 Jan 2018 20:29:53 +0800 Subject: [PATCH 04/19] =?UTF-8?q?ch3:=20=E6=B7=BB=E5=8A=A0=E7=9B=AE?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SUMMARY.md | 12 ++++++++++-- ch3-asm/ch3-01-basic.md | 3 +++ ch3-asm/ch3-02-control-flow.md | 3 +++ ch3-asm/ch3-03-var.md | 3 +++ ch3-asm/ch3-04-leaf-func.md | 3 +++ ch3-asm/ch3-05-more-stack.md | 3 +++ ch3-asm/ch3-06-gc.md | 3 +++ ch3-asm/ch3-07-pyrdown.md | 3 +++ ch3-asm/ch3-08-faq.md | 3 +++ ch3-asm/readme.md | 2 +- 10 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 ch3-asm/ch3-01-basic.md create mode 100644 ch3-asm/ch3-02-control-flow.md create mode 100644 ch3-asm/ch3-03-var.md create mode 100644 ch3-asm/ch3-04-leaf-func.md create mode 100644 ch3-asm/ch3-05-more-stack.md create mode 100644 ch3-asm/ch3-06-gc.md create mode 100644 ch3-asm/ch3-07-pyrdown.md create mode 100644 ch3-asm/ch3-08-faq.md diff --git a/SUMMARY.md b/SUMMARY.md index 4f1e05e..d69225e 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -18,8 +18,16 @@ * [2.6. 静态库和动态库](ch2-cgo/ch2-06-static-shared-lib.md) * [2.7. Go实现Python模块](ch2-cgo/ch2-07-py-module.md) * [2.8. 补充说明](ch2-cgo/ch2-08-faq.md) -* [第三章 汇编语言](ch3-asm/readme.md) -* [第四章 移动平台](ch4-mobile/readme.md) +* [第三章 汇编语言(TODO)](ch3-asm/readme.md) + * [3.1. 汇编基础(TODO)](ch3-asm/ch3-01-basic.md) + * [3.2. 控制流(TODO)](ch3-asm/ch3-02-control-flow.md) + * [3.3. 包变量(TODO)](ch3-asm/ch3-03-var.md) + * [3.4. 叶子函数(TODO)](ch3-asm/ch3-04-leaf-func.md) + * [3.5. 动态栈(TODO)](ch3-asm/ch3-05-more-stack.md) + * [3.6. 垃圾回收(TODO)](ch3-asm/ch3-06-gc.md) + * [3.7. 例子: 图像降采样(TODO)](ch3-asm/ch3-07-pyrdown.md) + * [3.8. 补充说明(TODO)](ch3-asm/ch3-08-faq.md) +* [第四章 移动平台(TODO)](ch4-mobile/readme.md) * [第六章 Go和Web](ch6-web/readme.md) * [6.1. Web开发简介](ch6-web/ch6-01-introduction.md) * [6.2. Router请求路由](ch6-web/ch6-02-router.md) diff --git a/ch3-asm/ch3-01-basic.md b/ch3-asm/ch3-01-basic.md new file mode 100644 index 0000000..a04ee5a --- /dev/null +++ b/ch3-asm/ch3-01-basic.md @@ -0,0 +1,3 @@ +# 3.1. 汇编基础(TODO) + +TODO diff --git a/ch3-asm/ch3-02-control-flow.md b/ch3-asm/ch3-02-control-flow.md new file mode 100644 index 0000000..9278cc2 --- /dev/null +++ b/ch3-asm/ch3-02-control-flow.md @@ -0,0 +1,3 @@ +# 3.2. 控制流(TODO) + +TODO diff --git a/ch3-asm/ch3-03-var.md b/ch3-asm/ch3-03-var.md new file mode 100644 index 0000000..3e6272e --- /dev/null +++ b/ch3-asm/ch3-03-var.md @@ -0,0 +1,3 @@ +# 3.3. 包变量(TODO) + +TODO diff --git a/ch3-asm/ch3-04-leaf-func.md b/ch3-asm/ch3-04-leaf-func.md new file mode 100644 index 0000000..67c3d1a --- /dev/null +++ b/ch3-asm/ch3-04-leaf-func.md @@ -0,0 +1,3 @@ +# 3.4. 叶子函数(TODO) + +TODO diff --git a/ch3-asm/ch3-05-more-stack.md b/ch3-asm/ch3-05-more-stack.md new file mode 100644 index 0000000..b980e66 --- /dev/null +++ b/ch3-asm/ch3-05-more-stack.md @@ -0,0 +1,3 @@ +# 3.5. 动态栈(TODO) + +TODO diff --git a/ch3-asm/ch3-06-gc.md b/ch3-asm/ch3-06-gc.md new file mode 100644 index 0000000..6b7748a --- /dev/null +++ b/ch3-asm/ch3-06-gc.md @@ -0,0 +1,3 @@ +# 3.6. 垃圾回收(TODO) + +TODO diff --git a/ch3-asm/ch3-07-pyrdown.md b/ch3-asm/ch3-07-pyrdown.md new file mode 100644 index 0000000..4cde048 --- /dev/null +++ b/ch3-asm/ch3-07-pyrdown.md @@ -0,0 +1,3 @@ +# 3.7. 例子: 图像降采样(TODO) + +TODO diff --git a/ch3-asm/ch3-08-faq.md b/ch3-asm/ch3-08-faq.md new file mode 100644 index 0000000..f89b61a --- /dev/null +++ b/ch3-asm/ch3-08-faq.md @@ -0,0 +1,3 @@ +# 3.8. 补充说明(TODO) + +TODO diff --git a/ch3-asm/readme.md b/ch3-asm/readme.md index 20f06e0..0734dba 100644 --- a/ch3-asm/readme.md +++ b/ch3-asm/readme.md @@ -1,3 +1,3 @@ -# 第三章 Go汇编语言 +# 第三章 Go汇编语言(TODO) TODO From 93aa027f21ad78e626d646d52270d14fecff23b4 Mon Sep 17 00:00:00 2001 From: chai2010 Date: Sat, 13 Jan 2018 15:51:22 +0800 Subject: [PATCH 05/19] =?UTF-8?q?ch3:=20=E5=87=86=E5=A4=87=E4=BE=8B?= =?UTF-8?q?=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/ch3-xx/add/add.go | 17 ++++ examples/ch3-xx/add/add_asm.go | 16 +++ examples/ch3-xx/add/add_asm_amd64.s | 23 +++++ examples/ch3-xx/add/add_asm_generic.go | 16 +++ examples/ch3-xx/add/add_test.go | 97 +++++++++++++++++++ examples/ch3-xx/add/runme.go | 14 +++ .../ch3-xx/binary_search/binary_search.go | 6 ++ .../binary_search/binary_search_amd64.s | 45 +++++++++ .../binary_search/binary_search_test.go | 26 +++++ examples/ch3-xx/globalvar/asm_amd64.s | 26 +++++ examples/ch3-xx/globalvar/globalvar.go | 32 ++++++ examples/ch3-xx/globalvar/runme.go | 17 ++++ examples/ch3-xx/hello/hello.go | 10 ++ examples/ch3-xx/hello/hello_amd64.s | 51 ++++++++++ examples/ch3-xx/hello/runme.go | 20 ++++ examples/ch3-xx/ifelse/ifelse.go | 15 +++ examples/ch3-xx/ifelse/ifelse_ams_amd64.s | 31 ++++++ examples/ch3-xx/ifelse/ifelse_test.go | 32 ++++++ examples/ch3-xx/ifelse/runme.go | 18 ++++ examples/ch3-xx/instr/bench_test.go | 22 +++++ examples/ch3-xx/instr/instr.go | 26 +++++ examples/ch3-xx/instr/instr_amd64.s | 57 +++++++++++ examples/ch3-xx/loop/loop.go | 16 +++ examples/ch3-xx/loop/loop_asm_amd64.s | 21 ++++ examples/ch3-xx/loop/loop_test.go | 54 +++++++++++ examples/ch3-xx/loop/runme.go | 17 ++++ examples/ch3-xx/min/min.go | 31 ++++++ examples/ch3-xx/min/min_asm_amd64.s | 26 +++++ examples/ch3-xx/min/min_test.go | 65 +++++++++++++ examples/ch3-xx/min/runme.go | 14 +++ examples/ch3-xx/slice/runme.go | 15 +++ examples/ch3-xx/slice/slice.go | 35 +++++++ examples/ch3-xx/slice/slice_asm_amd64.s | 59 +++++++++++ examples/ch3-xx/slice/slice_test.go | 82 ++++++++++++++++ examples/ch3-xx/stackmap/stackmap.go | 25 +++++ examples/ch3-xx/stackmap/stackmap_amd64.s | 44 +++++++++ examples/ch3-xx/stackmap/stackmap_test.go | 47 +++++++++ examples/ch3-xx/sum/sum.go | 6 ++ examples/ch3-xx/sum/sum_amd64.s | 9 ++ examples/ch3-xx/sum/sum_test.go | 14 +++ examples/ch3-xx/vector/sum_amd64.s | 11 +++ examples/ch3-xx/vector/vector.go | 8 ++ examples/ch3-xx/vector/vector_amd64.s | 28 ++++++ examples/ch3-xx/vector/vector_test.go | 40 ++++++++ 44 files changed, 1284 insertions(+) create mode 100644 examples/ch3-xx/add/add.go create mode 100644 examples/ch3-xx/add/add_asm.go create mode 100644 examples/ch3-xx/add/add_asm_amd64.s create mode 100644 examples/ch3-xx/add/add_asm_generic.go create mode 100644 examples/ch3-xx/add/add_test.go create mode 100644 examples/ch3-xx/add/runme.go create mode 100644 examples/ch3-xx/binary_search/binary_search.go create mode 100644 examples/ch3-xx/binary_search/binary_search_amd64.s create mode 100644 examples/ch3-xx/binary_search/binary_search_test.go create mode 100644 examples/ch3-xx/globalvar/asm_amd64.s create mode 100644 examples/ch3-xx/globalvar/globalvar.go create mode 100644 examples/ch3-xx/globalvar/runme.go create mode 100644 examples/ch3-xx/hello/hello.go create mode 100644 examples/ch3-xx/hello/hello_amd64.s create mode 100644 examples/ch3-xx/hello/runme.go create mode 100644 examples/ch3-xx/ifelse/ifelse.go create mode 100644 examples/ch3-xx/ifelse/ifelse_ams_amd64.s create mode 100644 examples/ch3-xx/ifelse/ifelse_test.go create mode 100644 examples/ch3-xx/ifelse/runme.go create mode 100755 examples/ch3-xx/instr/bench_test.go create mode 100755 examples/ch3-xx/instr/instr.go create mode 100755 examples/ch3-xx/instr/instr_amd64.s create mode 100644 examples/ch3-xx/loop/loop.go create mode 100644 examples/ch3-xx/loop/loop_asm_amd64.s create mode 100644 examples/ch3-xx/loop/loop_test.go create mode 100644 examples/ch3-xx/loop/runme.go create mode 100644 examples/ch3-xx/min/min.go create mode 100644 examples/ch3-xx/min/min_asm_amd64.s create mode 100644 examples/ch3-xx/min/min_test.go create mode 100644 examples/ch3-xx/min/runme.go create mode 100644 examples/ch3-xx/slice/runme.go create mode 100644 examples/ch3-xx/slice/slice.go create mode 100644 examples/ch3-xx/slice/slice_asm_amd64.s create mode 100644 examples/ch3-xx/slice/slice_test.go create mode 100755 examples/ch3-xx/stackmap/stackmap.go create mode 100755 examples/ch3-xx/stackmap/stackmap_amd64.s create mode 100755 examples/ch3-xx/stackmap/stackmap_test.go create mode 100644 examples/ch3-xx/sum/sum.go create mode 100644 examples/ch3-xx/sum/sum_amd64.s create mode 100644 examples/ch3-xx/sum/sum_test.go create mode 100644 examples/ch3-xx/vector/sum_amd64.s create mode 100644 examples/ch3-xx/vector/vector.go create mode 100644 examples/ch3-xx/vector/vector_amd64.s create mode 100644 examples/ch3-xx/vector/vector_test.go diff --git a/examples/ch3-xx/add/add.go b/examples/ch3-xx/add/add.go new file mode 100644 index 0000000..307c12e --- /dev/null +++ b/examples/ch3-xx/add/add.go @@ -0,0 +1,17 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +// Go版本, 支持内联优化 + +package add + +func Add(a, b int) int { + return a + b +} + +func AddSlice(dst, a, b []int) { + for i := 0; i < len(dst) && i < len(a) && i < len(b); i++ { + dst[i] = a[i] + b[i] + } + return +} diff --git a/examples/ch3-xx/add/add_asm.go b/examples/ch3-xx/add/add_asm.go new file mode 100644 index 0000000..054d6d6 --- /dev/null +++ b/examples/ch3-xx/add/add_asm.go @@ -0,0 +1,16 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +// +build amd64 + +// 汇编版本, 不支持内联优化 + +package add + +func AsmAdd(a, b int) int + +func AsmAddSlice(dst, a, b []int) { + AddSlice(dst, a, b) +} + +func AsmAddSlice__todo(dst, a, b []int) diff --git a/examples/ch3-xx/add/add_asm_amd64.s b/examples/ch3-xx/add/add_asm_amd64.s new file mode 100644 index 0000000..d7492d8 --- /dev/null +++ b/examples/ch3-xx/add/add_asm_amd64.s @@ -0,0 +1,23 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +#include "textflag.h" + +// func AsmAdd(a, b int) int +TEXT ·AsmAdd(SB), NOSPLIT, $0-24 + MOVQ a+0(FP), AX // a + MOVQ b+8(FP), BX // b + ADDQ AX, BX // a+b + MOVQ BX, ret+16(FP) // return a+b + RET + +// func AsmAddSlice(dst, a, b []int) +TEXT ·AsmAddSlice__todo(SB), NOSPLIT, $0-72 + MOVQ dst+0(FP), AX // AX: dst + MOVQ a+24(FP), BX // BX: &a + MOVQ b+48(FP), CX // CX: &b + MOVQ dst_len+8(FP), DX // DX: len(dst) + MOVQ a_len+32(FP), R8 // R8: len(a) + MOVQ b_len+56(FP), R9 // R9: len(b) + // TODO: DX = min(DX,R8,R9) + RET diff --git a/examples/ch3-xx/add/add_asm_generic.go b/examples/ch3-xx/add/add_asm_generic.go new file mode 100644 index 0000000..b096716 --- /dev/null +++ b/examples/ch3-xx/add/add_asm_generic.go @@ -0,0 +1,16 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +// +build !amd64 + +// 对于没有汇编实现的环境, 临时采用Go版本代替 + +package add + +func AsmAdd(a, b int) int { + return Add(a, b) +} + +func AsmAddSlice(dst, a, b []int) { + AddSlice(dst, a, b) +} diff --git a/examples/ch3-xx/add/add_test.go b/examples/ch3-xx/add/add_test.go new file mode 100644 index 0000000..b5cc477 --- /dev/null +++ b/examples/ch3-xx/add/add_test.go @@ -0,0 +1,97 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +// go test -bench=. + +package add + +import ( + "testing" +) + +func TestAdd(t *testing.T) { + t.Run("go", func(t *testing.T) { + if x := Add(1, 2); x != 3 { + t.Fatalf("expect = %d, got = %d", 3, x) + } + }) + t.Run("asm", func(t *testing.T) { + if x := AsmAdd(1, 2); x != 3 { + t.Fatalf("expect = %d, got = %d", 3, x) + } + }) +} + +func TestAddSlice(t *testing.T) { + a := []int{1, 2, 3, 4, 5} + b := []int{10, 20, 30, 40, 50, 60} + + t.Run("go", func(t *testing.T) { + x := make([]int, len(a)) + AddSlice(x, a, b) + + for i := 0; i < len(x) && i < len(a) && i < len(b); i++ { + if x[i] != a[i]+b[i] { + t.Fatalf("expect = %d, got = %d", x[i], a[i]+b[i]) + } + } + }) + + t.Run("asm", func(t *testing.T) { + x := make([]int, len(a)) + AsmAddSlice(x, a, b) + + for i := 0; i < len(x) && i < len(a) && i < len(b); i++ { + if x[i] != a[i]+b[i] { + t.Fatalf("expect = %d, got = %d", x[i], a[i]+b[i]) + } + } + }) +} + +func BenchmarkAdd(b *testing.B) { + b.Run("go", func(b *testing.B) { + for i := 0; i < b.N; i++ { + Add(1, 2) + } + }) + b.Run("asm", func(b *testing.B) { + for i := 0; i < b.N; i++ { + AsmAdd(1, 2) + } + }) +} + +func BenchmarkAddSlice(b *testing.B) { + s0 := make([]int, 10<<10) + s1 := make([]int, 10<<10) + dst := make([]int, 10<<10) + + b.Run("len=10", func(b *testing.B) { + dst := dst[:10] + for i := 0; i < b.N; i++ { + AddSlice(dst, s0, s1) + } + }) + b.Run("len=50", func(b *testing.B) { + dst := dst[:50] + for i := 0; i < b.N; i++ { + AddSlice(dst, s0, s1) + _ = dst + } + }) + b.Run("len=100", func(b *testing.B) { + dst := dst[:100] + for i := 0; i < b.N; i++ { + AddSlice(dst, s0, s1) + _ = dst + } + }) + b.Run("len=1000", func(b *testing.B) { + dst := dst[:1000] + for i := 0; i < b.N; i++ { + AddSlice(dst, s0, s1) + _ = dst + } + }) +} diff --git a/examples/ch3-xx/add/runme.go b/examples/ch3-xx/add/runme.go new file mode 100644 index 0000000..8a8f2c0 --- /dev/null +++ b/examples/ch3-xx/add/runme.go @@ -0,0 +1,14 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +// +build ignore + +package main + +import ( + . "." +) + +func main() { + println("Add(1+2) =", Add(1, 2)) +} diff --git a/examples/ch3-xx/binary_search/binary_search.go b/examples/ch3-xx/binary_search/binary_search.go new file mode 100644 index 0000000..1d72aa4 --- /dev/null +++ b/examples/ch3-xx/binary_search/binary_search.go @@ -0,0 +1,6 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +package bsearch + +func BinarySearch(arr []int, num int) bool diff --git a/examples/ch3-xx/binary_search/binary_search_amd64.s b/examples/ch3-xx/binary_search/binary_search_amd64.s new file mode 100644 index 0000000..de3827e --- /dev/null +++ b/examples/ch3-xx/binary_search/binary_search_amd64.s @@ -0,0 +1,45 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +TEXT ·BinarySearch+0(SB),$0 + +start: + MOVQ arr+0(FP), CX + MOVQ len+8(FP), AX + JMP find_index + +find_index: + XORQ DX, DX + MOVQ $2, BX + IDIVQ BX + JMP comp + +comp: + LEAQ (AX * 8), BX + ADDQ BX, CX + MOVQ num+24(FP), DX + CMPQ DX, (CX) + JE found + JG right + JL left + JMP not_found + +left: + CMPQ len+8(FP), $1 + JE not_found + MOVQ AX, len+8(FP) + JMP start + +right: + CMPQ len+8(FP), $1 + JE not_found + MOVQ CX, arr+0(FP) + JMP start + +not_found: + MOVQ $0, ret+32(FP) + RET + +found: + MOVQ $1, ret+32(FP) + RET diff --git a/examples/ch3-xx/binary_search/binary_search_test.go b/examples/ch3-xx/binary_search/binary_search_test.go new file mode 100644 index 0000000..504225c --- /dev/null +++ b/examples/ch3-xx/binary_search/binary_search_test.go @@ -0,0 +1,26 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +package bsearch + +import "testing" + +func TestBinarySearch(t *testing.T) { + data := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} + + if result := BinarySearch(data, 8); result != true { + t.Errorf("Expected true value for binary search.") + } + + if result := BinarySearch(data, 1); result != true { + t.Errorf("Expected true value for binary search.") + } + + if result := BinarySearch(data, 10); result != true { + t.Errorf("Expected true value for binary search.") + } + + if result := BinarySearch(data, 12); result != false { + t.Errorf("Expected false value for binary search.") + } +} diff --git a/examples/ch3-xx/globalvar/asm_amd64.s b/examples/ch3-xx/globalvar/asm_amd64.s new file mode 100644 index 0000000..b32a02e --- /dev/null +++ b/examples/ch3-xx/globalvar/asm_amd64.s @@ -0,0 +1,26 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +#include "textflag.h" + +// func GetPkgValue() int +TEXT ·GetPkgValue(SB), NOSPLIT, $0-8 + MOVQ ·gopkgValue(SB), AX + MOVQ AX, ret+0(FP) + RET + +// func GetPkgInfo() PkgInfo +TEXT ·GetPkgInfo(SB), NOSPLIT, $0-24 + MOVBLZX ·gInfo+0(SB), AX // .V0 byte + MOVQ AX, ret+0(FP) + MOVWLZX ·gInfo+2(SB), AX // .V1 uint16 + MOVQ AX, ret+2(FP) + MOVLQZX ·gInfo+4(SB), AX // .V2 int32 + MOVQ AX, ret+4(FP) + MOVQ ·gInfo+8(SB), AX // .V3 int32 + MOVQ AX, ret+8(FP) + MOVBLZX ·gInfo+(16+0)(SB), AX // .V4 bool + MOVQ AX, ret+(16+0)(FP) + MOVBLZX ·gInfo+(16+1)(SB), AX // .V5 bool + MOVQ AX, ret+(16+1)(FP) + RET diff --git a/examples/ch3-xx/globalvar/globalvar.go b/examples/ch3-xx/globalvar/globalvar.go new file mode 100644 index 0000000..65696c6 --- /dev/null +++ b/examples/ch3-xx/globalvar/globalvar.go @@ -0,0 +1,32 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +// 汇编中访问Go中定义的全局变量 + +package globalvar + +var gopkgValue int = 42 + +type PkgInfo struct { + V0 byte + V1 uint16 + V2 int32 + V3 int64 + V4 bool + V5 bool +} + +var gInfo PkgInfo + +func init() { + gInfo.V0 = 101 + gInfo.V1 = 102 + gInfo.V2 = 103 + gInfo.V3 = 104 + gInfo.V4 = true + gInfo.V5 = false +} + +func GetPkgValue() int + +func GetPkgInfo() PkgInfo diff --git a/examples/ch3-xx/globalvar/runme.go b/examples/ch3-xx/globalvar/runme.go new file mode 100644 index 0000000..db42bb5 --- /dev/null +++ b/examples/ch3-xx/globalvar/runme.go @@ -0,0 +1,17 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +// +build ignore + +package main + +import ( + "fmt" + + . "." +) + +func main() { + fmt.Println(GetPkgValue()) + fmt.Println(GetPkgInfo()) +} diff --git a/examples/ch3-xx/hello/hello.go b/examples/ch3-xx/hello/hello.go new file mode 100644 index 0000000..ff96b94 --- /dev/null +++ b/examples/ch3-xx/hello/hello.go @@ -0,0 +1,10 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +package hello + +var text = "你好, 世界, 包变量\n" + +func PrintHelloWorld() +func PrintHelloWorld_zh() +func PrintHelloWorld_var() diff --git a/examples/ch3-xx/hello/hello_amd64.s b/examples/ch3-xx/hello/hello_amd64.s new file mode 100644 index 0000000..8276bdb --- /dev/null +++ b/examples/ch3-xx/hello/hello_amd64.s @@ -0,0 +1,51 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +#include "textflag.h" +#include "funcdata.h" + +// "Hello World!\n" +DATA text<>+0(SB)/8,$"Hello Wo" +DATA text<>+8(SB)/8,$"rld!\n" +GLOBL text<>(SB),NOPTR,$16 + +// utf8: "你好, 世界!\n" +// hex: e4bda0e5a5bd2c20 e4b896e7958c210a +// len: 16 +DATA text_zh<>+0(SB)/8,$"\xe4\xbd\xa0\xe5\xa5\xbd\x2c\x20" +DATA text_zh<>+8(SB)/8,$"\xe4\xb8\x96\xe7\x95\x8c\x21\x0a" +GLOBL text_zh<>(SB),NOPTR,$16 + +// func PrintHelloWorld_var() +TEXT ·PrintHelloWorld_var(SB), $16-0 + NO_LOCAL_POINTERS + CALL runtime·printlock(SB) + MOVQ ·text+0(SB), AX + MOVQ AX, (SP) + MOVQ ·text+8(SB), AX + MOVQ AX, 8(SP) + CALL runtime·printstring(SB) + CALL runtime·printunlock(SB) + RET + +// func PrintHelloWorld() +TEXT ·PrintHelloWorld(SB), $16-0 + NO_LOCAL_POINTERS + CALL runtime·printlock(SB) + MOVQ $text<>+0(SB), AX + MOVQ AX, (SP) + MOVQ $16, 8(SP) + CALL runtime·printstring(SB) + CALL runtime·printunlock(SB) + RET + +// func PrintHelloWorld_zh() +TEXT ·PrintHelloWorld_zh(SB), $16-0 + NO_LOCAL_POINTERS + CALL runtime·printlock(SB) + MOVQ $text_zh<>+0(SB), AX + MOVQ AX, (SP) + MOVQ $16, 8(SP) + CALL runtime·printstring(SB) + CALL runtime·printunlock(SB) + RET diff --git a/examples/ch3-xx/hello/runme.go b/examples/ch3-xx/hello/runme.go new file mode 100644 index 0000000..4abd431 --- /dev/null +++ b/examples/ch3-xx/hello/runme.go @@ -0,0 +1,20 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +// +build ignore + +package main + +import ( + "fmt" + + . "." +) + +func main() { + s := "你好, 世界!\n" + fmt.Printf("%d: %x\n", len(s), s) + PrintHelloWorld() + PrintHelloWorld_zh() + PrintHelloWorld_var() +} diff --git a/examples/ch3-xx/ifelse/ifelse.go b/examples/ch3-xx/ifelse/ifelse.go new file mode 100644 index 0000000..0a9a0e7 --- /dev/null +++ b/examples/ch3-xx/ifelse/ifelse.go @@ -0,0 +1,15 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +// Go版本, 支持内联优化 + +package ifelse + +func If(ok bool, a, b int) int { + if ok { + return a + } + return b +} + +func AsmIf(ok bool, a, b int) int diff --git a/examples/ch3-xx/ifelse/ifelse_ams_amd64.s b/examples/ch3-xx/ifelse/ifelse_ams_amd64.s new file mode 100644 index 0000000..c10b73f --- /dev/null +++ b/examples/ch3-xx/ifelse/ifelse_ams_amd64.s @@ -0,0 +1,31 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +#include "textflag.h" + +// +// https://github.com/golang/go/issues/14288 +// +// from rsc: +// But expanding what I said yesterday just a bit: +// never use MOVB or MOVW with a register destination, +// since it's inefficient (it's a read-modify-write on the target register). +// Instead use MOVL for reg->reg and use MOVBLZX or MOVWLZX for mem->reg; +// those are pure writes on the target register. +// +// 因此, 加载bool型参数到寄存器时, 建议使用 MOVBLZX. +// 如果使用 MOVB 的话, go test 虽然通过了, +// 但是 go run runme.go 则出现错误结果. +// + +// func AsmIf(ok bool, a, b int) int +TEXT ·AsmIf(SB), NOSPLIT, $0-32 + MOVBQZX ok+0(FP), AX // ok + MOVQ a+8(FP), BX // a + MOVQ b+16(FP), CX // b + CMPQ AX, $0 // test ok + JEQ 3(PC) // if !ok, skip 2 line + MOVQ BX, ret+24(FP) // return a + RET + MOVQ CX, ret+24(FP) // return b + RET diff --git a/examples/ch3-xx/ifelse/ifelse_test.go b/examples/ch3-xx/ifelse/ifelse_test.go new file mode 100644 index 0000000..8309cba --- /dev/null +++ b/examples/ch3-xx/ifelse/ifelse_test.go @@ -0,0 +1,32 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +// go test -bench=. + +package ifelse + +import ( + "testing" +) + +func TestMin(t *testing.T) { + t.Run("go", func(t *testing.T) { + if x := If(true, 1, 2); x != 1 { + t.Fatalf("expect = %d, got = %d", 1, x) + } + if x := If(false, 1, 2); x != 2 { + t.Fatalf("expect = %d, got = %d", 2, x) + } + }) + t.Run("asm", func(t *testing.T) { + if x := AsmIf(true, 1, 2); x != 1 { + t.Fatalf("expect = %d, got = %d", 1, x) + } + if x := AsmIf(false, 1, 2); x != 2 { + t.Fatalf("expect = %d, got = %d", 2, x) + } + if x := AsmIf(false, 2, 1); x != 1 { + t.Fatalf("expect = %d, got = %d", 1, x) + } + }) +} diff --git a/examples/ch3-xx/ifelse/runme.go b/examples/ch3-xx/ifelse/runme.go new file mode 100644 index 0000000..1920942 --- /dev/null +++ b/examples/ch3-xx/ifelse/runme.go @@ -0,0 +1,18 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +// +build ignore + +package main + +import ( + . "." +) + +func main() { + println("If(true, 1, 2) =", If(true, 1, 2)) + println("If(false, 1, 2) =", If(false, 1, 2)) + println("AsmIf(true, 1, 2) =", AsmIf(true, 1, 2)) + println("AsmIf(false, 1, 2) =", AsmIf(false, 1, 2)) + println("AsmIf(false, 2, 1) =", AsmIf(false, 2, 1)) +} diff --git a/examples/ch3-xx/instr/bench_test.go b/examples/ch3-xx/instr/bench_test.go new file mode 100755 index 0000000..2ae33f5 --- /dev/null +++ b/examples/ch3-xx/instr/bench_test.go @@ -0,0 +1,22 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +package instr + +import "testing" + +var g int64 + +func BenchmarkSum(b *testing.B) { + ns := []int64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} + for i := 0; i < b.N; i++ { + g = Sum(ns) + } +} + +func BenchmarkSum2(b *testing.B) { + ns := []int64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} + for i := 0; i < b.N; i++ { + g = Sum2(ns) + } +} diff --git a/examples/ch3-xx/instr/instr.go b/examples/ch3-xx/instr/instr.go new file mode 100755 index 0000000..2bbe396 --- /dev/null +++ b/examples/ch3-xx/instr/instr.go @@ -0,0 +1,26 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +package instr + +func Add(n, m int64) int64 { + return n + m +} + +func Add2(n, m int64) int64 + +// BSF returns the index of the least significant set bit, +// or -1 if the input contains no set bits. +func BSF(n int64) int + +func BSF32(n int32) int32 + +func Sum(s []int64) int64 { + var ss int64 + for _, n := range s { + ss += n + } + return ss +} + +func Sum2(s []int64) int64 diff --git a/examples/ch3-xx/instr/instr_amd64.s b/examples/ch3-xx/instr/instr_amd64.s new file mode 100755 index 0000000..bfac1f3 --- /dev/null +++ b/examples/ch3-xx/instr/instr_amd64.s @@ -0,0 +1,57 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +#include "textflag.h" + +// func Add2(n, m int64) int32 +TEXT ·Add2(SB), NOSPLIT, $0-24 + MOVQ n+0(FP), AX + MOVQ m+8(FP), BX + ADDQ AX, BX + MOVQ BX, ret+16(FP) + RET + +// func BSF(n int64) int +TEXT ·BSF(SB), NOSPLIT, $0 + BSFQ n+0(FP), AX + JEQ allZero + MOVQ AX, ret+8(FP) + RET + +allZero: + MOVQ $-1, ret+8(FP) + RET + +// func BSF32(n int32) int32 +TEXT ·BSF32(SB), NOSPLIT, $0 + BSFL n+0(FP), AX + JEQ allZero32 + MOVL AX, ret+8(FP) + RET + +allZero32: + MOVL $-1, ret+8(FP) + RET + +// func Sum2(s []int64) int64 +TEXT ·Sum2(SB), NOSPLIT, $0 + MOVQ $0, DX + MOVQ s_base+0(FP), AX + MOVQ s_len+8(FP), DI + MOVQ $0, CX + CMPQ CX, DI + JGE Sum2End + +Sum2Loop: + MOVQ (AX), BP + ADDQ BP, DX + ADDQ $8, AX + INCQ CX + CMPQ CX, DI + JL Sum2Loop + +Sum2End: + MOVQ DX, ret+24(FP) + RET + +// vim: set ft=txt: diff --git a/examples/ch3-xx/loop/loop.go b/examples/ch3-xx/loop/loop.go new file mode 100644 index 0000000..b5174f5 --- /dev/null +++ b/examples/ch3-xx/loop/loop.go @@ -0,0 +1,16 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +// Go版本, 支持内联优化 + +package loop + +func LoopAdd(cnt, v0, step int) int { + result := v0 + for i := 0; i < cnt; i++ { + result += step + } + return result +} + +func AsmLoopAdd(cnt, v0, step int) int diff --git a/examples/ch3-xx/loop/loop_asm_amd64.s b/examples/ch3-xx/loop/loop_asm_amd64.s new file mode 100644 index 0000000..38e7f03 --- /dev/null +++ b/examples/ch3-xx/loop/loop_asm_amd64.s @@ -0,0 +1,21 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +#include "textflag.h" + +// func AsmLoopAdd(cnt, v0, step int) int +TEXT ·AsmLoopAdd(SB), NOSPLIT, $0-32 + MOVQ cnt+0(FP), AX // cnt + MOVQ v0+8(FP), BX // v0 + MOVQ step+16(FP), CX // step + +loop: + CMPQ AX, $0 // compare cnt,0 + JLE end // if cnt <= 0: go end + DECQ AX // cnt-- + ADDQ CX, BX // v0 += step + JMP loop // goto loop + +end: + MOVQ BX, ret+24(FP) // return v0 + RET diff --git a/examples/ch3-xx/loop/loop_test.go b/examples/ch3-xx/loop/loop_test.go new file mode 100644 index 0000000..076042a --- /dev/null +++ b/examples/ch3-xx/loop/loop_test.go @@ -0,0 +1,54 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +// go test -bench=. + +package loop + +import ( + "testing" +) + +func TestLoopAdd(t *testing.T) { + t.Run("go", func(t *testing.T) { + if x := LoopAdd(100, 0, 1); x != 100 { + t.Fatalf("expect = %d, got = %d", 100, x) + } + if x := LoopAdd(100, 0, 2); x != 200 { + t.Fatalf("expect = %d, got = %d", 200, x) + } + if x := LoopAdd(100, 0, -1); x != -100 { + t.Fatalf("expect = %d, got = %d", -100, x) + } + if x := LoopAdd(100, 50, 1); x != 150 { + t.Fatalf("expect = %d, got = %d", 150, x) + } + }) + t.Run("asm", func(t *testing.T) { + if x := AsmLoopAdd(100, 0, 1); x != 100 { + t.Fatalf("expect = %d, got = %d", 100, x) + } + if x := AsmLoopAdd(100, 0, 2); x != 200 { + t.Fatalf("expect = %d, got = %d", 200, x) + } + if x := AsmLoopAdd(100, 0, -1); x != -100 { + t.Fatalf("expect = %d, got = %d", -100, x) + } + if x := AsmLoopAdd(100, 50, 1); x != 150 { + t.Fatalf("expect = %d, got = %d", 150, x) + } + }) +} + +func BenchmarkLoopAdd(b *testing.B) { + b.Run("go", func(b *testing.B) { + for i := 0; i < b.N; i++ { + LoopAdd(1000, 0, 1) + } + }) + b.Run("asm", func(b *testing.B) { + for i := 0; i < b.N; i++ { + AsmLoopAdd(1000, 0, 1) + } + }) +} diff --git a/examples/ch3-xx/loop/runme.go b/examples/ch3-xx/loop/runme.go new file mode 100644 index 0000000..3505c60 --- /dev/null +++ b/examples/ch3-xx/loop/runme.go @@ -0,0 +1,17 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +// +build ignore + +package main + +import ( + . "." +) + +func main() { + println("LoopAdd(100,0,1) =", LoopAdd(100, 0, 1)) + println("LoopAdd(100,0,2) =", LoopAdd(100, 0, 2)) + println("LoopAdd(100,200,-1) =", LoopAdd(100, 200, -1)) + println("LoopAdd(100,0,-1) =", LoopAdd(100, 0, -1)) +} diff --git a/examples/ch3-xx/min/min.go b/examples/ch3-xx/min/min.go new file mode 100644 index 0000000..7faa628 --- /dev/null +++ b/examples/ch3-xx/min/min.go @@ -0,0 +1,31 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +// Go版本, 支持内联优化 + +package min + +func Min(a, b int) int { + if a < b { + return a + } + return b +} + +//go:noinline +func MinNoInline(a, b int) int { + if a < b { + return a + } + return b +} + +func Max(a, b int) int { + if a > b { + return a + } + return b +} + +func AsmMin(a, b int) int +func AsmMax(a, b int) int diff --git a/examples/ch3-xx/min/min_asm_amd64.s b/examples/ch3-xx/min/min_asm_amd64.s new file mode 100644 index 0000000..60043a9 --- /dev/null +++ b/examples/ch3-xx/min/min_asm_amd64.s @@ -0,0 +1,26 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +#include "textflag.h" + +// func AsmMin(a, b int) int +TEXT ·AsmMin(SB), NOSPLIT, $0-24 + MOVQ a+0(FP), AX // a + MOVQ b+8(FP), BX // b + CMPQ AX, BX // compare a, b + JGT 3(PC) // if a>b, skip 2 line + MOVQ AX, ret+16(FP) // return a + RET + MOVQ BX, ret+16(FP) // return b + RET + +// func AsmMax(a, b int) int +TEXT ·AsmMax(SB), NOSPLIT, $0-24 + MOVQ a+0(FP), AX // a + MOVQ b+8(FP), BX // b + CMPQ AX, BX // compare a, b + JLT 3(PC) // if a. +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +// go test -bench=. + +package min + +import ( + "testing" +) + +func TestMin(t *testing.T) { + t.Run("go", func(t *testing.T) { + if x := Min(1, 2); x != 1 { + t.Fatalf("expect = %d, got = %d", 1, x) + } + if x := Min(2, 1); x != 1 { + t.Fatalf("expect = %d, got = %d", 1, x) + } + }) + t.Run("asm", func(t *testing.T) { + if x := AsmMin(1, 2); x != 1 { + t.Fatalf("expect = %d, got = %d", 1, x) + } + if x := AsmMin(2, 1); x != 1 { + t.Fatalf("expect = %d, got = %d", 1, x) + } + }) +} +func TestMax(t *testing.T) { + t.Run("go", func(t *testing.T) { + if x := Max(1, 2); x != 2 { + t.Fatalf("expect = %d, got = %d", 2, x) + } + if x := Max(2, 1); x != 2 { + t.Fatalf("expect = %d, got = %d", 2, x) + } + }) + t.Run("asm", func(t *testing.T) { + if x := AsmMax(1, 2); x != 2 { + t.Fatalf("expect = %d, got = %d", 2, x) + } + if x := AsmMax(2, 1); x != 2 { + t.Fatalf("expect = %d, got = %d", 2, x) + } + }) +} + +func BenchmarkMin(b *testing.B) { + b.Run("go", func(b *testing.B) { + for i := 0; i < b.N; i++ { + Min(1, 2) + } + }) + b.Run("go.noinline", func(b *testing.B) { + for i := 0; i < b.N; i++ { + MinNoInline(1, 2) + } + }) + b.Run("asm", func(b *testing.B) { + for i := 0; i < b.N; i++ { + AsmMin(1, 2) + } + }) +} diff --git a/examples/ch3-xx/min/runme.go b/examples/ch3-xx/min/runme.go new file mode 100644 index 0000000..66fc42e --- /dev/null +++ b/examples/ch3-xx/min/runme.go @@ -0,0 +1,14 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +// +build ignore + +package main + +import ( + . "." +) + +func main() { + println("Min(1,2) =", Min(1, 2)) +} diff --git a/examples/ch3-xx/slice/runme.go b/examples/ch3-xx/slice/runme.go new file mode 100644 index 0000000..8336e92 --- /dev/null +++ b/examples/ch3-xx/slice/runme.go @@ -0,0 +1,15 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +// +build ignore + +package main + +import ( + . "." +) + +func main() { + println("SumIntSlice([]int{1,2,3}) =", SumIntSlice([]int{1, 2, 3})) + println("AsmSumIntSlice([]int{1,2,3}) =", AsmSumIntSlice([]int{1, 2, 3})) +} diff --git a/examples/ch3-xx/slice/slice.go b/examples/ch3-xx/slice/slice.go new file mode 100644 index 0000000..f3cf545 --- /dev/null +++ b/examples/ch3-xx/slice/slice.go @@ -0,0 +1,35 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +// Go版本, 支持内联优化 + +package slice + +func SumIntSlice(s []int) int { + var sum int + for _, v := range s { + sum += v + } + return sum +} + +func SumFloat32Slice(s []float32) float32 { + var sum float32 + for _, v := range s { + sum += v + } + return sum +} + +func SumFloat64Slice(s []float64) float64 { + var sum float64 + for _, v := range s { + sum += v + } + return sum +} + +func AsmSumInt16Slice(v []int16) int16 + +func AsmSumIntSlice(s []int) int +func AsmSumIntSliceV2(s []int) int diff --git a/examples/ch3-xx/slice/slice_asm_amd64.s b/examples/ch3-xx/slice/slice_asm_amd64.s new file mode 100644 index 0000000..e1eb290 --- /dev/null +++ b/examples/ch3-xx/slice/slice_asm_amd64.s @@ -0,0 +1,59 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +#include "textflag.h" + +// func AsmSumInt16Slice(v []int16) int16 +TEXT ·AsmSumInt16Slice(SB), NOSPLIT, $0-26 + MOVQ v_base+0(FP), R8 + MOVQ v_len+8(FP), R9 + SHLQ $1, R9 + ADDQ R8, R9 + MOVQ $0, R10 + +loop: + CMPQ R8, R9 + JE end + ADDW (R8), R10 + ADDQ $2, R8 + JMP loop + +end: + MOVW R10, ret+24(FP) + RET + +// func AsmSumIntSlice(s []int) int +TEXT ·AsmSumIntSlice(SB), NOSPLIT, $0-32 + MOVQ s+0(FP), AX // &s[0] + MOVQ s_len+8(FP), BX // len(s) + MOVQ $0, CX // sum = 0 + +loop: + CMPQ BX, $0 // compare cnt,0 + JLE end // if cnt <= 0: goto end + DECQ BX // cnt-- + ADDQ (AX), CX // sum += s[i] + ADDQ $8, AX // i++ + JMP loop // goto loop + +end: + MOVQ CX, ret+24(FP) // return sum + RET + +// func AsmSumIntSliceV2(s []int) int +TEXT ·AsmSumIntSliceV2(SB), NOSPLIT, $0-32 + MOVQ s+0(FP), AX // p := &s[0] + MOVQ s_len+8(FP), BX + LEAQ 0(AX)(BX*8), BX // p_end := &s[len(s)] + MOVQ $0, CX // sum = 0 + +loop: + CMPQ AX, BX // compare p,p_end + JGE end // if p >= p_end: goto end + ADDQ (AX), CX // sum += s[i] + ADDQ $8, AX // p++ + JMP loop // goto loop + +end: + MOVQ CX, ret+24(FP) // return sum + RET diff --git a/examples/ch3-xx/slice/slice_test.go b/examples/ch3-xx/slice/slice_test.go new file mode 100644 index 0000000..eaeca23 --- /dev/null +++ b/examples/ch3-xx/slice/slice_test.go @@ -0,0 +1,82 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +// go test -bench=. + +package slice + +import ( + "testing" +) + +func TestLoopAdd(t *testing.T) { + t.Run("go", func(t *testing.T) { + if x := SumIntSlice([]int{1, 2, 3}); x != 6 { + t.Fatalf("expect = %d, got = %d", 6, x) + } + }) + t.Run("asm", func(t *testing.T) { + if x := AsmSumIntSlice([]int{1, 2, 3}); x != 6 { + t.Fatalf("expect = %d, got = %d", 6, x) + } + }) + t.Run("asm.v2", func(t *testing.T) { + if x := AsmSumIntSliceV2([]int{1, 2, 3}); x != 6 { + t.Fatalf("expect = %d, got = %d", 6, x) + } + }) +} + +func BenchmarkLoopAdd(b *testing.B) { + s10 := make([]int, 10) + s100 := make([]int, 100) + s1000 := make([]int, 1000) + + b.Run("go/len=10", func(b *testing.B) { + for i := 0; i < b.N; i++ { + SumIntSlice(s10) + } + }) + b.Run("asm/len=10", func(b *testing.B) { + for i := 0; i < b.N; i++ { + AsmSumIntSlice(s10) + } + }) + b.Run("asm.v2/len=10", func(b *testing.B) { + for i := 0; i < b.N; i++ { + AsmSumIntSliceV2(s10) + } + }) + + b.Run("go/len=100", func(b *testing.B) { + for i := 0; i < b.N; i++ { + SumIntSlice(s100) + } + }) + b.Run("asm/len=100", func(b *testing.B) { + for i := 0; i < b.N; i++ { + AsmSumIntSlice(s100) + } + }) + b.Run("asm.v2/len=100", func(b *testing.B) { + for i := 0; i < b.N; i++ { + AsmSumIntSliceV2(s100) + } + }) + + b.Run("go/len=1000", func(b *testing.B) { + for i := 0; i < b.N; i++ { + SumIntSlice(s1000) + } + }) + b.Run("asm/len=1000", func(b *testing.B) { + for i := 0; i < b.N; i++ { + AsmSumIntSlice(s1000) + } + }) + b.Run("asm.v2/len=1000", func(b *testing.B) { + for i := 0; i < b.N; i++ { + AsmSumIntSliceV2(s1000) + } + }) +} diff --git a/examples/ch3-xx/stackmap/stackmap.go b/examples/ch3-xx/stackmap/stackmap.go new file mode 100755 index 0000000..82964c8 --- /dev/null +++ b/examples/ch3-xx/stackmap/stackmap.go @@ -0,0 +1,25 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +package stackmap + +func X(b []byte) []byte + +//func X(b []byte) []byte { +// if len(b) == cap(b) { +// b = growSlice(b) +// } +// b = b[:len(b)+1] +// b[len(b)-1] = 3 +// return b +//} + +func growSlice(b []byte) []byte { + newCap := 10 + if cap(b) > 5 { + newCap = cap(b) * 2 + } + b1 := make([]byte, len(b), newCap) + copy(b1, b) + return b1 +} diff --git a/examples/ch3-xx/stackmap/stackmap_amd64.s b/examples/ch3-xx/stackmap/stackmap_amd64.s new file mode 100755 index 0000000..55cb134 --- /dev/null +++ b/examples/ch3-xx/stackmap/stackmap_amd64.s @@ -0,0 +1,44 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +#include "funcdata.h" +#include "textflag.h" + +// func X(b []byte) []byte +TEXT ·X(SB), $48-48 + MOVQ b_base+0(FP), BX + MOVQ b_len+8(FP), CX + MOVQ b_cap+16(FP), DX + + CMPQ CX, DX + JL afterGrow + + // Set up the growSlice call. + MOVQ BX, gs_base-48(SP) + MOVQ CX, gs_len-40(SP) + MOVQ DX, gs_cap-32(SP) + + CALL ·growSlice(SB) + + MOVQ gs_base-24(SP), BX + MOVQ gs_len-16(SP), CX + MOVQ gs_cap-8(SP), DX + +afterGrow: + // At this point, we have adequate capacity to increase len + 1 and the + // following register scheme: + // BX - b_base + // CX - b_len + // DX - b_cap + + // Write base/cap results. + MOVQ BX, ret_base+24(FP) + MOVQ DX, ret_cap+40(FP) + + // Write new element to b and increment the length. + LEAQ (BX)(CX*1), BX + MOVB $3, (BX) + ADDQ $1, CX + MOVQ CX, ret_len+32(FP) + + RET diff --git a/examples/ch3-xx/stackmap/stackmap_test.go b/examples/ch3-xx/stackmap/stackmap_test.go new file mode 100755 index 0000000..4116132 --- /dev/null +++ b/examples/ch3-xx/stackmap/stackmap_test.go @@ -0,0 +1,47 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +package stackmap + +import ( + "bytes" + "testing" +) + +func TestX(t *testing.T) { + b := make([]byte, 0, 3) + + for _, want := range [][]byte{ + mkSlice(3, 3), + mkSlice(3, 3, 3), + mkSlice(3, 3, 3, 3), + mkSlice(10, 3, 3, 3, 3), + mkSlice(10, 3, 3, 3, 3, 3), + mkSlice(10, 3, 3, 3, 3, 3, 3), + mkSlice(10, 3, 3, 3, 3, 3, 3, 3), + mkSlice(10, 3, 3, 3, 3, 3, 3, 3, 3), + mkSlice(10, 3, 3, 3, 3, 3, 3, 3, 3, 3), + mkSlice(10, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3), + mkSlice(20, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3), + } { + b = X(b) + if !slicesEqual(b, want) { + t.Fatalf("got %v[cap=%d]; want %v[cap=%d]", + b, cap(b), want, cap(want)) + } + } +} + +func mkSlice(cap int, vs ...byte) []byte { + b1 := make([]byte, 0, cap) + for _, v := range vs { + b1 = append(b1, v) + } + return b1 +} +func slicesEqual(b0, b1 []byte) bool { + if cap(b0) != cap(b1) { + return false + } + return bytes.Equal(b0, b1) +} diff --git a/examples/ch3-xx/sum/sum.go b/examples/ch3-xx/sum/sum.go new file mode 100644 index 0000000..ddc536c --- /dev/null +++ b/examples/ch3-xx/sum/sum.go @@ -0,0 +1,6 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +package sum + +func Sum(a int, b int) int diff --git a/examples/ch3-xx/sum/sum_amd64.s b/examples/ch3-xx/sum/sum_amd64.s new file mode 100644 index 0000000..e88c85e --- /dev/null +++ b/examples/ch3-xx/sum/sum_amd64.s @@ -0,0 +1,9 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +TEXT ·Sum+0(SB),$0 + MOVQ a+0(FP), BX + MOVQ b+8(FP), BP + ADDQ BP, BX + MOVQ BX, return+16(FP) + RET diff --git a/examples/ch3-xx/sum/sum_test.go b/examples/ch3-xx/sum/sum_test.go new file mode 100644 index 0000000..f8a4551 --- /dev/null +++ b/examples/ch3-xx/sum/sum_test.go @@ -0,0 +1,14 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +package sum + +import "testing" + +func TestSum(t *testing.T) { + result := Sum(1, 1) + + if result != 2 { + t.Errorf("%d does not equal 2", result) + } +} diff --git a/examples/ch3-xx/vector/sum_amd64.s b/examples/ch3-xx/vector/sum_amd64.s new file mode 100644 index 0000000..caa74db --- /dev/null +++ b/examples/ch3-xx/vector/sum_amd64.s @@ -0,0 +1,11 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +TEXT ·SumVec+0(SB), $0 + MOVQ vec1+0(FP), BX // Move the first vector into BX + MOVQ vec2+24(FP), CX // Move the second vector into BX + MOVUPS (BX), X0 + MOVUPS (CX), X1 + ADDPS X0, X1 + MOVUPS X1, result+48(FP) + RET diff --git a/examples/ch3-xx/vector/vector.go b/examples/ch3-xx/vector/vector.go new file mode 100644 index 0000000..705d591 --- /dev/null +++ b/examples/ch3-xx/vector/vector.go @@ -0,0 +1,8 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +package vector + +func Find(vec []int, num int) bool + +func SumVec(vec1 []int32, vec2 []int32) [4]int32 diff --git a/examples/ch3-xx/vector/vector_amd64.s b/examples/ch3-xx/vector/vector_amd64.s new file mode 100644 index 0000000..2698edc --- /dev/null +++ b/examples/ch3-xx/vector/vector_amd64.s @@ -0,0 +1,28 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +TEXT ·Find+0(SB),$0 + MOVQ $0, SI // zero the iterator + MOVQ vec+0(FP), BX // BX = &vec[0] + MOVQ vec+8(FP), CX // len(vec) + MOVQ num+24(FP), DX + +start: + CMPQ SI, CX + JG notfound + CMPQ (BX), DX + JNE notequal + JE found + +found: + MOVQ $1, return+32(FP) + RET + +notequal: + INCQ SI + LEAQ +8(BX), BX + JMP start + +notfound: + MOVQ $0, return+32(FP) + RET diff --git a/examples/ch3-xx/vector/vector_test.go b/examples/ch3-xx/vector/vector_test.go new file mode 100644 index 0000000..97b6949 --- /dev/null +++ b/examples/ch3-xx/vector/vector_test.go @@ -0,0 +1,40 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +package vector + +import "testing" + +func TestFind(t *testing.T) { + vec := []int{1, 2, 3, 4, 5, 6, 7, 8} + if result := Find(vec, 5); result != true { + t.Errorf("Could not find number in vector, got: %v", result) + } + + if result := Find(vec, 10); result != false { + t.Errorf("Returned true when false was expected") + } +} + +func TestSum(t *testing.T) { + vec1 := []int32{1, 2, 3, 5} + vec2 := []int32{1, 2, 3, 5} + + result := SumVec(vec1, vec2) + + if result[0] != 2 { + t.Errorf("Expected 2, got %v, result was: %v", result[0], result) + } + + if result[1] != 4 { + t.Errorf("Expected 4, got %v, result was: %v", result[0], result) + } + + if result[2] != 6 { + t.Errorf("Expected 6, got %v, result was: %v", result[0], result) + } + + if result[3] != 10 { + t.Errorf("Expected 10, got %v, result was: %v", result[0], result) + } +} From be0ccbe30114b62c0df814ca3a555ccd90be479e Mon Sep 17 00:00:00 2001 From: jiayx Date: Mon, 15 Jan 2018 10:32:43 +0800 Subject: [PATCH 06/19] =?UTF-8?q?1.6=20Unlock=20=E6=8B=BC=E5=86=99?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ch1-basic/ch1-06-goroutine.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ch1-basic/ch1-06-goroutine.md b/ch1-basic/ch1-06-goroutine.md index 1149297..c11ed59 100644 --- a/ch1-basic/ch1-06-goroutine.md +++ b/ch1-basic/ch1-06-goroutine.md @@ -30,7 +30,7 @@ func main() { } ``` -因为`mu.Lock()`和`mu.Unock()`并不在同一个Goroutine中,所以也就不满足顺序一致性内存模型。同时它们也没有其它的同步事件可以参考,这两个事件不可排序也就是可以并发的。因为可能是并发的事件,所以`main`函数中的`mu.Unock()`很有可能先发生,而这个时刻`mu`互斥对象还处于未加锁的状态,从而会导致运行时异常。 +因为`mu.Lock()`和`mu.Unlock()`并不在同一个Goroutine中,所以也就不满足顺序一致性内存模型。同时它们也没有其它的同步事件可以参考,这两个事件不可排序也就是可以并发的。因为可能是并发的事件,所以`main`函数中的`mu.Unlock()`很有可能先发生,而这个时刻`mu`互斥对象还处于未加锁的状态,从而会导致运行时异常。 下面是修复后的代码: @@ -41,14 +41,14 @@ func main() { mu.Lock() go func(){ fmt.Println("你好, 世界") - mu.Unock() + mu.Unlock() }() mu.Lock() } ``` -修复的方式是在`main`函数所在线程中执行两次`mu.Lock()`,当第二次加锁时会因为锁已经被占用(不是递归锁)而阻塞,`main`函数的阻塞状态驱动后台线程继续向前执行。当后台线程执行到`mu.Unock()`时解锁,此时打印工作已经完成了,解锁会导致`main`函数中的第二个`mu.Lock()`阻塞状态取消,此时后台线程和主线程再没有其它的同步事件参考,它们退出的事件将是并发的:在`main`函数退出导致程序退出时,后台线程可能已经退出了,也可能没有退出。虽然无法确定两个线程退出的时间,但是打印工作是可以正确完成的。 +修复的方式是在`main`函数所在线程中执行两次`mu.Lock()`,当第二次加锁时会因为锁已经被占用(不是递归锁)而阻塞,`main`函数的阻塞状态驱动后台线程继续向前执行。当后台线程执行到`mu.Unlock()`时解锁,此时打印工作已经完成了,解锁会导致`main`函数中的第二个`mu.Lock()`阻塞状态取消,此时后台线程和主线程再没有其它的同步事件参考,它们退出的事件将是并发的:在`main`函数退出导致程序退出时,后台线程可能已经退出了,也可能没有退出。虽然无法确定两个线程退出的时间,但是打印工作是可以正确完成的。 使用`sync.Mutex`互斥锁同步是比较低级的做法。我们现在改用无缓存的管道来实现同步: From 90ccf739c0bc5457571735328479ffbe90e17a04 Mon Sep 17 00:00:00 2001 From: lewgun Date: Mon, 15 Jan 2018 14:47:28 +0800 Subject: [PATCH 07/19] fix typo in ch2.6 --- ch2-cgo/ch2-06-static-shared-lib.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/ch2-cgo/ch2-06-static-shared-lib.md b/ch2-cgo/ch2-06-static-shared-lib.md index 0eb1752..4623f5f 100644 --- a/ch2-cgo/ch2-06-static-shared-lib.md +++ b/ch2-cgo/ch2-06-static-shared-lib.md @@ -1,10 +1,10 @@ # 2.6. 静态库和动态库 -CGO在使用C/C++资源的时候一般有三种形式:直接使用源码;链接静态库;链接动态库。直接使用源码就是在`import "C"`之前的注释部分包含C代码,或者在当前包中包含C/C++源文件。链接静态库和动态库的方式比较类似,都是通过在LDFLAGS选项指定要链接的库方式链接。本节我们主要关注CGO中如何处理静态库和动态库相关的问题。 +CGO在使用C/C++资源的时候一般有三种形式:直接使用源码;链接静态库;链接动态库。直接使用源码就是在`import "C"`之前的注释部分包含C代码,或者在当前包中包含C/C++源文件。链接静态库和动态库的方式比较类似,都是通过在LDFLAGS选项指定要链接的库方式链接。本节我们主要关注在CGO中如何使用静态库和动态库相关的问题。 ## 使用C静态库 -如果CGO中引入的C/C++资源有代码而且代码规模也比较小,直接使用源码是最理想的方式。很多时候我们并没有源代码,或者从C/C++源代码的构建过程异常复杂,这种时候使用C静态库也是一个不错的选择。静态库因为是静态链接,最终的目标程序并不会产生额外的运行时依赖,而且也不会出现动态库特有的跨运行时资源管理的错误。不过静态库对链接阶段会有一定要求:静态库一般包含了全部的代码,里面会有大量的符号,如果不同静态库之间出现符号冲突会导致链接的失败。 +如果CGO中引入的C/C++资源有代码而且代码规模也比较小,直接使用源码是最理想的方式,但很多时候我们并没有源代码,或者从C/C++源代码开始构建的过程异常复杂,这种时候使用C静态库也是一个不错的选择。静态库因为是静态链接,最终的目标程序并不会产生额外的运行时依赖,也不会出现动态库特有的跨运行时资源管理的错误。不过静态库对链接阶段会有一定要求:静态库一般包含了全部的代码,里面会有大量的符号,如果不同静态库之间出现了符号冲突则会导致链接的失败。 我们先用纯C语言构造一个简单的静态库。我们要构造的静态库名叫number,库中只有一个number_add_mod函数,用于表示数论中的模加法运算。number库的文件都在number目录下。 @@ -26,7 +26,7 @@ int number_add_mod(int a, int b, int mod) { 因为CGO使用的是GCC命令来编译和链接C和Go桥接的代码。因此静态库也必须是GCC兼容的格式。 -通过以下命令可以生成一个libnumber.a的静态库: +通过以下命令可以生成一个叫libnumber.a的静态库: ``` $ cd ./number @@ -53,11 +53,11 @@ func main() { } ``` -其中有两个#cgo命令,分别是编译和链接参数。CFLAGS通过`-I./number`将number库对应头文件所在的目录加入头文件检索路径。LDFLAGS通过`-L${SRCDIR}/number`将编译后number静态库所在目录加为链接库检索路径,`-lnumber`表示链接libnumber.a静态库。需要注意的是,在链接部分的检索路径不能使用相对路径(这是由于C/C++代码的链接程序所限制),我们必须通过cgo特有的`${SRCDIR}`变量将源文件对应的当前目录路径展开为绝对路径(因此在windows平台中绝对路径不能有空白符号)。 +其中有两个#cgo命令,分别是编译和链接参数。CFLAGS通过`-I./number`将number库对应头文件所在的目录加入头文件检索路径。LDFLAGS通过`-L${SRCDIR}/number`将编译后number静态库所在目录加为链接库检索路径,`-lnumber`表示链接libnumber.a静态库。需要注意的是,在链接部分的检索路径不能使用相对路径(C/C++代码的链接程序所限制),我们必须通过cgo特有的`${SRCDIR}`变量将源文件对应的当前目录路径展开为绝对路径(因此在windows平台中绝对路径不能有空白符号)。 -因为我们有number库的全部代码,我们可以用go generate工具来生成静态库,或者是通过Makefile来构建静态库。因此发布CGO源码包时,我们并不需要提前构建C静态库。 +因为我们有number库的全部代码,所以我们可以用go generate工具来生成静态库,或者是通过Makefile来构建静态库。因此发布CGO源码包时,我们并不需要提前构建C静态库。 -因为多了一个静态库的构建步骤,这种使用了自定义静态库并已经包含了静态库全部代码的Go包无法直接用go get安装。不过我们依然可以通过go get下载,然后用go generate触发静态库构建,最后才是go install安装来完成。 +因为多了一个静态库的构建步骤,这种使用了自定义静态库并已经包含了静态库全部代码的Go包无法直接用go get安装。不过我们依然可以通过go get下载,然后用go generate触发静态库构建,最后才是go install来完成安装。 为了支持go get命令直接下载并安装,我们C语言的`#include`语法可以将number库的源文件链接到当前的包。 @@ -71,11 +71,11 @@ func main() { 如果使用的是第三方的静态库,我们需要先下载安装静态库到合适的位置。然后在#cgo命令中通过CFLAGS和LDFLAGS来指定头文件和库的位置。对于不同的操作系统甚至同一种操作系统的不同版本来说,这些库的安装路径可能都是不同的,那么如何在代码中指定这些可能变化的参数呢? -在Linux环境,有个一个pkg-config命令可以查询要使用某个静态库或动态库时的编译和链接参数。我们可以在#cgo命令中直接使用pkg-config命令来生成编译和链接参数。而且还可以通过PKG_CONFIG环境变量订制pkg-config命令。因为不同的操作系统对pkg-config命令的支持不尽相同,通过该方式很难兼容不同的操作系统下的构建参数。不过对于Linux等特定的系统,pkg-config命令确实可以简化构建参数的管理。关于pkg-config的使用细节我们不再深入展开,大家可以自行参考相关文档。 +在Linux环境,有一个pkg-config命令可以查询要使用某个静态库或动态库时的编译和链接参数。我们可以在#cgo命令中直接使用pkg-config命令来生成编译和链接参数。而且还可以通过PKG_CONFIG环境变量订制pkg-config命令。因为不同的操作系统对pkg-config命令的支持不尽相同,通过该方式很难兼容不同的操作系统下的构建参数。不过对于Linux等特定的系统,pkg-config命令确实可以简化构建参数的管理。关于pkg-config的使用细节在此我们不深入展开,大家可以自行参考相关文档。 ## 使用C动态库 -动态库出现的初衷是对于相同的库,多个进程可以共享一个动态库,可以节省内存和磁盘资源。但是在磁盘和内存已经白菜价的今天,动态库能节省的空间已经微不足道了,那么动态库还有哪些存在的价值呢?从库开发角度来说,动态库可以隔离不同动态库之间的关系,减少链接时出现符号冲突的风险。而且对于windows等平台,动态库是跨越VC和GCC不太编译器平台的唯一的可行方式。 +动态库出现的初衷是对于相同的库,多个进程可以共享同一个,以节省内存和磁盘资源。但是在磁盘和内存已经白菜价的今天,这两个作用已经显得微不足道了,那么除此之外动态库还有哪些存在的价值呢?从库开发角度来说,动态库可以隔离不同动态库之间的关系,减少链接时出现符号冲突的风险。而且对于windows等平台,动态库是跨越VC和GCC不同编译器平台的唯一的可行方式。 对于CGO来说,使用动态库和静态库是一样的,因为动态库也必须要有一个小的静态导出库用于链接动态库(Linux下可以直接链接so文件,但是在Windows下必须为dll创建一个`.a`文件用于链接)。我们还是以前面的number库为例来说明如何以动态库方式使用。 @@ -118,7 +118,7 @@ number_add_mod 其中第一行的LIBRARY指明动态库的文件名,然后的EXPORTS语句之后是要导出的符号名列表。 -现在我们可以用以下命令来创建动态库(需要进入VC对于的x64命令行环境)。 +现在我们可以用以下命令来创建动态库(需要进入VC对应的x64命令行环境)。 ``` $ cl /c number.c @@ -139,7 +139,7 @@ $ dlltool -dllname number.dll --def number.def --output-lib libnumber.a ## 导出C静态库 -CGO不仅可以使用C静态库,也可以将Go实现的函数导出为C静态库。我们现在用Go实现前面的number库的莫加法函数。 +CGO不仅可以使用C静态库,也可以将Go实现的函数导出为C静态库。我们现在用Go实现前面的number库的模加法函数。 创建number.go,内容如下: @@ -180,7 +180,7 @@ extern int number_add_mod(int p0, int p1, int p2); 其中`extern "C"`部分的语法是为了同时适配C和C++两种语言。核心内容是声明了要导出的number_add_mod函数。 -然后我们创建一个`_test_main.c`的C文件用于测试生成的C静态库(用下划线作为前著名是让go build构建C静态库时忽略这个文件): +然后我们创建一个`_test_main.c`的C文件用于测试生成的C静态库(用下划线作为前缀名是让为了让go build构建C静态库时忽略这个文件): ```c #include "number.h" @@ -241,11 +241,11 @@ $ ./a.out Requires exactly one main package to be listed. ``` -文档说明导出的C函数必须是在main包导出,然后才能在生成的头文件包含声明的语句。但是很多时候我们可能更希望将不太类型的导出函数组织到不同的Go包中,然后统一导出为一个静态库或动态库。 +文档说明导出的C函数必须是在main包导出,然后才能在生成的头文件包含声明的语句。但是很多时候我们可能更希望将不同类型的导出函数组织到不同的Go包中,然后统一导出为一个静态库或动态库。 要实现从是从非main包导出C函数,或者是多个包导出C函数(因为只能有一个main包),我们需要自己提供导出C函数对应的头文件(因为CGO无法为非main包的导出函数生成头文件)。 -假设我们先创建一个number子包,用于提供莫加法函数: +假设我们先创建一个number子包,用于提供模加法函数: ```go package number From 805eae3f94b882ad1ed878a367c900c291bedd37 Mon Sep 17 00:00:00 2001 From: Xargin Date: Thu, 8 Feb 2018 20:37:04 +0800 Subject: [PATCH 08/19] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ch6-web/ch6-03-middleware.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/ch6-web/ch6-03-middleware.md b/ch6-web/ch6-03-middleware.md index 36f423d..895a45b 100644 --- a/ch6-web/ch6-03-middleware.md +++ b/ch6-web/ch6-03-middleware.md @@ -153,12 +153,26 @@ func (f HandlerFunc) ServeHTTP(w ResponseWriter, r *Request) func (ResponseWriter, *Request) ``` -那么这个 handler 就是一个 HandlerFunc 类型了,也就相当于实现了 http.Handler 这个接口,这要归功于 golang 的 duck typing 式的类型系统。在 http 库需要调用你的 handler 函数来处理 http 请求时,会调用 HandlerFunc 的 ServeHTTP 函数,可见一个请求的基本调用链是这样的: +那么这个 handler 和 http.HandlerFunc 就有了一致的函数签名,可以将该 handler 函数进行类型转换,转为 http.HandlerFunc。而 http.HandlerFunc 实现了 http.Handler 这个接口。在 http 库需要调用你的 handler 函数来处理 http 请求时,会调用 HandlerFunc 的 ServeHTTP 函数,可见一个请求的基本调用链是这样的: ```go h = getHandler() => h.ServeHTTP(w, r) => h(w, r) ``` +上面提到的把自定义 handler 转换为 http.HandlerFunc 这个过程是必须的,因为我们的 handler 没有直接实现 ServeHTTP 这个接口。上面的代码中我们看到的 HandleFunc(注意 HandlerFunc 和 HandleFunc 的区别)里也可以看到这个强制转换过程: + +```go +func HandleFunc(pattern string, handler func(ResponseWriter, *Request)) { + DefaultServeMux.HandleFunc(pattern, handler) +} + +// 调用 + +func (mux *ServeMux) HandleFunc(pattern string, handler func(ResponseWriter, *Request)) { + mux.Handle(pattern, HandlerFunc(handler)) +} +``` + 知道 handler 是怎么一回事,我们的中间件通过包装 handler,再返回一个新的 handler 就好理解了。 总结一下,我们的中间件要做的事情就是通过一个或多个函数对 handler 进行包装,返回一个包括了各个中间件逻辑的函数链。我们把上面的包装再做得复杂一些: From ea69f0020732ff858150a3814c801689f2478bdf Mon Sep 17 00:00:00 2001 From: chai2010 Date: Sun, 18 Feb 2018 02:56:41 +0800 Subject: [PATCH 09/19] =?UTF-8?q?=E6=96=B0=E5=BB=BA=20talks=20=E7=9B=AE?= =?UTF-8?q?=E5=BD=95,=20=E6=94=B6=E5=BD=95=E7=9B=B8=E5=85=B3=E7=9A=84?= =?UTF-8?q?=E6=8A=A5=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- talks/gopherchina2018-cgo-talk/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 talks/gopherchina2018-cgo-talk/README.md diff --git a/talks/gopherchina2018-cgo-talk/README.md b/talks/gopherchina2018-cgo-talk/README.md new file mode 100644 index 0000000..d4373c4 --- /dev/null +++ b/talks/gopherchina2018-cgo-talk/README.md @@ -0,0 +1,3 @@ +# GopherChina 2018 报告 + +- [深入CGO编程](https://mp.weixin.qq.com/s/1_v8DsvinZWfh0-HXks88Q) - by chai2010 (内容将在大会前一天公开, 先占个坑) From b0900525fb8da62f6056299eeeabb54067727520 Mon Sep 17 00:00:00 2001 From: chai2010 Date: Sun, 18 Feb 2018 03:09:02 +0800 Subject: [PATCH 10/19] =?UTF-8?q?talks:=20=E5=A2=9E=E5=8A=A0=E6=97=A9?= =?UTF-8?q?=E6=9C=9F=E7=9A=84cgo=E6=8A=A5=E5=91=8A(2011)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- talks/.gitignore | 1 + talks/README.md | 4 ++++ talks/chai2010-cgo-talk-sz-20110207.pdf | Bin 0 -> 459514 bytes 3 files changed, 5 insertions(+) create mode 100644 talks/.gitignore create mode 100644 talks/README.md create mode 100644 talks/chai2010-cgo-talk-sz-20110207.pdf diff --git a/talks/.gitignore b/talks/.gitignore new file mode 100644 index 0000000..9c1c72d --- /dev/null +++ b/talks/.gitignore @@ -0,0 +1 @@ +!chai2010-cgo-talk-sz-20110207.pdf diff --git a/talks/README.md b/talks/README.md new file mode 100644 index 0000000..d087d88 --- /dev/null +++ b/talks/README.md @@ -0,0 +1,4 @@ +# 相关 报告 + +- [Go集成C/C++代码](chai2010-cgo-talk-sz-20110207.pdf) - chai2010, 珠三角技术沙龙深圳(2011.02.27) +- [深入CGO编程](https://mp.weixin.qq.com/s/1_v8DsvinZWfh0-HXks88Q) - by chai2010 (内容将在大会前一天公开, 先占个坑) diff --git a/talks/chai2010-cgo-talk-sz-20110207.pdf b/talks/chai2010-cgo-talk-sz-20110207.pdf new file mode 100644 index 0000000000000000000000000000000000000000..97ea6fc3adf63244223bf0e2c2b685f97a341d9d GIT binary patch literal 459514 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�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
  • xz#@Nw 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­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

    `v?2I_9d9X4;s~$ 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 literal 0 HcmV?d00001 From 0fc0bbe5aaa60414eae54b609d6fde5884ebab43 Mon Sep 17 00:00:00 2001 From: chai2010 Date: Sun, 18 Feb 2018 03:16:47 +0800 Subject: [PATCH 11/19] =?UTF-8?q?talks:=20=E5=AE=8C=E5=96=84=20readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- talks/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/talks/README.md b/talks/README.md index d087d88..8c663fe 100644 --- a/talks/README.md +++ b/talks/README.md @@ -1,4 +1,4 @@ # 相关 报告 -- [Go集成C/C++代码](chai2010-cgo-talk-sz-20110207.pdf) - chai2010, 珠三角技术沙龙深圳(2011.02.27) -- [深入CGO编程](https://mp.weixin.qq.com/s/1_v8DsvinZWfh0-HXks88Q) - by chai2010 (内容将在大会前一天公开, 先占个坑) +- [Go集成C/C++代码(PDF)](chai2010-cgo-talk-sz-20110207.pdf) - chai2010, 珠三角技术沙龙深圳(2011.02.27) +- [深入CGO编程](https://mp.weixin.qq.com/s/1_v8DsvinZWfh0-HXks88Q) - by chai2010, GopherChina 2018 中国上海(2018.04.14~15) (内容将在大会前一天公开, 先占个坑) From 9876071ce28e37782c592d43f41c0394bca214d3 Mon Sep 17 00:00:00 2001 From: chai2010 Date: Sun, 18 Feb 2018 03:27:46 +0800 Subject: [PATCH 12/19] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E8=84=9A=E6=9C=AC,=20=E7=A6=81=E6=AD=A2=E6=9C=AC=E5=9C=B0?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server.go | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/server.go b/server.go index 252dcf3..0bf15bf 100644 --- a/server.go +++ b/server.go @@ -19,6 +19,7 @@ import ( var ( flagRootDir = flag.String("dir", ".", "root dir") flagHttpAddr = flag.String("http", ":8080", "HTTP service address") + flagNoCache = flag.Bool("no-cache", true, "disable browser cache") flagOpenBrowser = flag.Bool("openbrowser", true, "open browser automatically") ) @@ -47,7 +48,11 @@ func main() { log.Printf("Hit CTRL-C to stop the server\n") }() - log.Fatal(http.ListenAndServe(httpAddr, http.FileServer(http.Dir(*flagRootDir)))) + mainHandler := http.FileServer(http.Dir(*flagRootDir)) + if *flagNoCache { + mainHandler = NoCache(mainHandler) + } + log.Fatal(http.ListenAndServe(httpAddr, mainHandler)) } // waitServer waits some time for the http Server to start @@ -97,3 +102,41 @@ func startBrowser(url string) bool { cmd := exec.Command(args[0], append(args[1:], url)...) return cmd.Start() == nil } + +var epoch = time.Unix(0, 0).Format(time.RFC1123) + +var noCacheHeaders = map[string]string{ + "Expires": epoch, + "Cache-Control": "no-cache, private, max-age=0", + "Pragma": "no-cache", + "X-Accel-Expires": "0", +} + +var etagHeaders = []string{ + "ETag", + "If-Modified-Since", + "If-Match", + "If-None-Match", + "If-Range", + "If-Unmodified-Since", +} + +func NoCache(h http.Handler) http.Handler { + fn := func(w http.ResponseWriter, r *http.Request) { + // Delete any ETag headers that may have been set + for _, v := range etagHeaders { + if r.Header.Get(v) != "" { + r.Header.Del(v) + } + } + + // Set our NoCache headers + for k, v := range noCacheHeaders { + w.Header().Set(k, v) + } + + h.ServeHTTP(w, r) + } + + return http.HandlerFunc(fn) +} From 5865cd03b7fde1a6922ede584bf4fb6f82db4cd0 Mon Sep 17 00:00:00 2001 From: chai2010 Date: Sun, 18 Feb 2018 03:46:59 +0800 Subject: [PATCH 13/19] =?UTF-8?q?ch2-1:=20=E5=A2=9E=E5=8A=A0=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E6=96=B0=E7=9A=84=E4=BE=8B=E5=AD=90,=20=E6=9B=B4?= =?UTF-8?q?=E5=8A=A0Go=E9=A3=8E=E6=A0=BC=E7=9A=84CGO=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ch2-cgo/ch2-01-hello-cgo.md | 26 ++++++++++++++++++++++++++ examples/ch2-01/hello-06/main.go | 23 +++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 examples/ch2-01/hello-06/main.go diff --git a/ch2-cgo/ch2-01-hello-cgo.md b/ch2-cgo/ch2-01-hello-cgo.md index 84b9515..3ec308f 100644 --- a/ch2-cgo/ch2-01-hello-cgo.md +++ b/ch2-cgo/ch2-01-hello-cgo.md @@ -127,6 +127,32 @@ func SayHello(s *C.char) { } ``` + +现在中国版本的CGO代码中C语言代码的比例已经很少了,但是我们依然可以进一步以Go语言的思维来提炼我们的CGO代码。通过分析可以发现`SayHello`函数的参数如果可以直接使用Go字符串是最直接的。在Go1.10中CGO新增加了一个`_GoString_`预定义的C语言类型,用来表示Go语言字符串。下面是改进后的代码: + +```go +// +build go1.10 + +package main + +//void SayHello(_GoString_ s); +import "C" + +import ( + "fmt" +) + +func main() { + C.SayHello("Hello, World\n") +} + +//export SayHello +func SayHello(s string) { + fmt.Print(s) +} +``` + 虽然看起来全部是Go语言代码,但是执行的时候是先从Go语言的`main`函数,到CGO自动生成的C语言版本`SayHello`桥接函数,最后又回到了Go语言环境的`SayHello`函数。虽然看起来有点绕,但CGO确实是这样运行的。 + 需要注意的是,CGO导出Go语言函数时,函数参数中不再支持C语言中`const`修饰符。 diff --git a/examples/ch2-01/hello-06/main.go b/examples/ch2-01/hello-06/main.go new file mode 100644 index 0000000..015d460 --- /dev/null +++ b/examples/ch2-01/hello-06/main.go @@ -0,0 +1,23 @@ +// Copyright © 2017 ChaiShushan . +// License: https://creativecommons.org/licenses/by-nc-sa/4.0/ + +// +build go1.10 + +package main + +//void SayHello(_GoString_ s); +import "C" + +import ( + "fmt" +) + +func main() { + C.SayHello("Hello, World\n") + C.SayHello("") +} + +//export SayHello +func SayHello(s string) { + fmt.Print(s) +} From c5bbf0d538942f27501ecc9992fac715c095b8a9 Mon Sep 17 00:00:00 2001 From: chai2010 Date: Sun, 18 Feb 2018 03:54:34 +0800 Subject: [PATCH 14/19] =?UTF-8?q?ch2-8:=20=E5=AE=8C=E5=96=84=E5=86=85?= =?UTF-8?q?=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ch2-cgo/ch2-08-faq.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ch2-cgo/ch2-08-faq.md b/ch2-cgo/ch2-08-faq.md index feb086d..5f26326 100644 --- a/ch2-cgo/ch2-08-faq.md +++ b/ch2-cgo/ch2-08-faq.md @@ -1,4 +1,6 @@ # 2.8. 补充说明 +为何要话费巨大的精力学习CGO是一个问题。任何技术和语言都有它自身的优点和不足,Go语言不是银弹,它无法解决全部问题。而通过CGO可以继承C/C++将近半个世纪的软件遗产,通过CGO可以用Go给其它系统写C接口的共享库,通过CGO技术可以让Go语言编写的代码可以很好地融入现有的软件生态——而现在的软件正式建立在C/C++语言之上的。因此说CGO是一个保底的后备技术,它是Go的一个重量级的替补技术,值得任何一个严肃的Go语言开发人员学习。 + 本章讨论了CGO的一些常见用法,并给出相关的例子。关于CGO有几点补充:如果有纯Go的解决方法就不要使用CGO;CGO中涉及的C和C++构建问题非常繁琐;CGO有一定的限制无法实现解决全部的问题;不要试图越过CGO的一些限制。而且CGO只是一种官方提供并推荐的Go语言和C/C++交互的方法。如果是使用的gccgo的版本,可以通过gccgo的方式实现Go和C/C++的交互。同时SWIG也是一种选择,并对C++诸多特性提供了支持。 From 0b37329ef91b6c01840e7ce7ed5bf6d1bb1cd722 Mon Sep 17 00:00:00 2001 From: chai2010 Date: Sun, 18 Feb 2018 04:11:09 +0800 Subject: [PATCH 15/19] =?UTF-8?q?ch2-2:=20=E5=AE=8C=E5=96=84=E5=AD=97?= =?UTF-8?q?=E7=AC=A6=E4=B8=B2=E5=86=85=E5=AD=98,=20=E5=A2=9E=E5=8A=A0Go1.1?= =?UTF-8?q?0=E7=9A=84=E5=8F=98=E6=9B=B4=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ch2-cgo/ch2-02-cgo-types.md | 17 ++++++++++++++++- examples/ch2-01/hello-06/main.go | 1 + 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/ch2-cgo/ch2-02-cgo-types.md b/ch2-cgo/ch2-02-cgo-types.md index 9962e35..84dfc2b 100644 --- a/ch2-cgo/ch2-02-cgo-types.md +++ b/ch2-cgo/ch2-02-cgo-types.md @@ -90,7 +90,22 @@ extern void helloString(GoString p0); extern void helloSlice(GoSlice p0); ``` -不过需要注意的是,如果使用了GoString类型则会对`_cgo_export.h`头文件产生依赖,而这个头文件是动态输出的。更严谨的做法是为C语言函数接口定义严格的头文件,然后基于稳定的头文件实现代码。 +不过需要注意的是,如果使用了GoString类型则会对`_cgo_export.h`头文件产生依赖,而这个头文件是动态输出的。 + +Go1.10针对Go字符串增加了一个`_GoString_`预定义类型,可以降低在cgo代码中可能对`_cgo_export.h`头文件产生的循环依赖的风险。我们可以调整helloString函数的C语言声明为: + +```c +extern void helloString(_GoString_ p0); +``` + +因为`_GoString_`是预定义类型,我们无法通过此类型直接访问字符串的长度和指针等信息。Go1.10同时也增加了以下两个函数用于获取字符串结构中的长度和指针信息: + +```c +size_t _GoStringLen(_GoString_ s); +const char *_GoStringPtr(_GoString_ s); +``` + +更严谨的做法是为C语言函数接口定义严格的头文件,然后基于稳定的头文件实现代码。 ## 结构体、联合、枚举类型 diff --git a/examples/ch2-01/hello-06/main.go b/examples/ch2-01/hello-06/main.go index 015d460..0f0f8f8 100644 --- a/examples/ch2-01/hello-06/main.go +++ b/examples/ch2-01/hello-06/main.go @@ -19,5 +19,6 @@ func main() { //export SayHello func SayHello(s string) { + fmt.Println(int(C._GoStringLen(s))) fmt.Print(s) } From 7362838b3172ba2205439101a2db2b4d9b990028 Mon Sep 17 00:00:00 2001 From: chai2010 Date: Sun, 18 Feb 2018 04:13:35 +0800 Subject: [PATCH 16/19] =?UTF-8?q?images:=20=E9=92=88=E5=AF=B9cgo=E7=94=9F?= =?UTF-8?q?=E6=88=90=E4=B8=80=E4=BA=9B=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- images/Makefile | 31 +++++++++ images/ch1-01-go-family-tree-x.dot.png | Bin 0 -> 10542 bytes images/ch2-call-c-sum-v1.plantuml | 46 +++++++++++++ images/ch2-call-c-sum-v1.uml.png | Bin 0 -> 38588 bytes images/ch2-call-c-sum-v2.plantuml | 63 ++++++++++++++++++ images/ch2-call-c-sum-v2.uml.png | Bin 0 -> 57266 bytes images/ch2-cgo-generated-files.dot | 37 +++++++++++ images/ch2-cgo-generated-files.dot.png | Bin 0 -> 51673 bytes images/ch2-int32-to-char-ptr.plantuml | 29 ++++++++ images/ch2-int32-to-char-ptr.uml.png | Bin 0 -> 16100 bytes images/ch2-qsort-v2.plantuml | 88 +++++++++++++++++++++++++ images/ch2-qsort-v2.uml.png | Bin 0 -> 50324 bytes images/ch2-x-ptr-to-y-ptr.plantuml | 23 +++++++ images/ch2-x-ptr-to-y-ptr.uml.png | Bin 0 -> 9685 bytes images/ch2-x-slice-to-y-slice.plantuml | 36 ++++++++++ images/ch2-x-slice-to-y-slice.uml.png | Bin 0 -> 14544 bytes 16 files changed, 353 insertions(+) create mode 100644 images/Makefile create mode 100644 images/ch1-01-go-family-tree-x.dot.png create mode 100644 images/ch2-call-c-sum-v1.plantuml create mode 100644 images/ch2-call-c-sum-v1.uml.png create mode 100644 images/ch2-call-c-sum-v2.plantuml create mode 100644 images/ch2-call-c-sum-v2.uml.png create mode 100644 images/ch2-cgo-generated-files.dot create mode 100644 images/ch2-cgo-generated-files.dot.png create mode 100644 images/ch2-int32-to-char-ptr.plantuml create mode 100644 images/ch2-int32-to-char-ptr.uml.png create mode 100644 images/ch2-qsort-v2.plantuml create mode 100644 images/ch2-qsort-v2.uml.png create mode 100644 images/ch2-x-ptr-to-y-ptr.plantuml create mode 100644 images/ch2-x-ptr-to-y-ptr.uml.png create mode 100644 images/ch2-x-slice-to-y-slice.plantuml create mode 100644 images/ch2-x-slice-to-y-slice.uml.png diff --git a/images/Makefile b/images/Makefile new file mode 100644 index 0000000..6a63adc --- /dev/null +++ b/images/Makefile @@ -0,0 +1,31 @@ +# Copyright 2017 . All rights reserved. +# Use of this source code is governed by a Apache +# license that can be found in the LICENSE file. + +UML_FILES=$(wildcard ./*.plantuml) +UML_SVG_FILES=$(patsubst %.plantuml,%.uml.svg,$(UML_FILES)) +UML_PNG_FILES=$(patsubst %.plantuml,%.uml.png,$(UML_FILES)) + +DOT_FILES=$(wildcard ./*.dot) +DOT_PNG_FILES=$(patsubst %.dot,%.dot.png,$(DOT_FILES)) + +default: $(UML_PNG_FILES) $(DOT_PNG_FILES) + @echo "ok" + +logo: + convert logo-2018-01.png -resize 300x65 logo.png + @echo "ok" + +clean: + -rm *.dot.png + -rm *.uml.png + -rm *.uml.svg + +%.uml.svg: %.plantuml + cat $< | docker run --rm -i chai2010/ibox:plantuml > $@ + +%.uml.png: %.plantuml + cat $< | docker run --rm -i chai2010/ibox:plantuml -tpng > $@ + +%.dot.png: %.dot + dot -Tpng -o $@ $< diff --git a/images/ch1-01-go-family-tree-x.dot.png b/images/ch1-01-go-family-tree-x.dot.png new file mode 100644 index 0000000000000000000000000000000000000000..feb8adb80c631858c9fbdce2c33ef4f84bff66ee GIT binary patch literal 10542 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 literal 0 HcmV?d00001 diff --git a/images/ch2-call-c-sum-v1.plantuml b/images/ch2-call-c-sum-v1.plantuml new file mode 100644 index 0000000..59a92d9 --- /dev/null +++ b/images/ch2-call-c-sum-v1.plantuml @@ -0,0 +1,46 @@ +' Copyright 2017 . All rights reserved. +' Use of this source code is governed by a Apache +' license that can be found in the LICENSE file. + +@startuml + +title C.sum(2, 3) + +|main.go| +:func main() { + C.sum(2, 3)) +}; + +|#AntiqueWhite|main.cgo1.go| +:func main() { + _Cfunc_sum(2, 3)) +}; + +|#AntiqueWhite|_cgo_types.go| +:func _Cfunc_sum(2, 3) double { + _cgo_runtime_cgocall(...) + return +}; + +|runtime.cgocall| +:_cgo_runtime_cgocall(...); + +fork + +|#AntiqueWhite|main.cgo2.c| +: double _cgo_xxx_Cfunc_sum(2, 3) { + return sum(2, 3) +}; + +|#AntiqueWhite|_cgo_export.c| +:sum(2, 3); + +endfork + +|runtime.cgocall| +:_cgo_runtime_cgocall(...); + +|main.go| +stop + +@enduml diff --git a/images/ch2-call-c-sum-v1.uml.png b/images/ch2-call-c-sum-v1.uml.png new file mode 100644 index 0000000000000000000000000000000000000000..c4930efa0520e3099a5b70dc1d951b8bc6905591 GIT binary patch literal 38588 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 O6A_dUNO`33_WuAS^Oha} literal 0 HcmV?d00001 diff --git a/images/ch2-call-c-sum-v2.plantuml b/images/ch2-call-c-sum-v2.plantuml new file mode 100644 index 0000000..9e1286b --- /dev/null +++ b/images/ch2-call-c-sum-v2.plantuml @@ -0,0 +1,63 @@ +' Copyright 2017 . All rights reserved. +' Use of this source code is governed by a Apache +' license that can be found in the LICENSE file. + +@startuml + +title c call go func + +|_testmain.c| +:int main() { + extern int sum(int a, int b) + sum(1, 2) + return 0 +}; +-[#green,dashed]-> + +fork + +|#AntiqueWhite|_cgo_export.c| +:int sum(int p0, int p1) { + struct { int p0, p1, r0; } a + _cgo_ctxt = _cgo_wait_runtime_init_done() + crosscall2(_cgoexp_xxx_sum, &a, 16, _cgo_ctxt) + _cgo_release_context(_cgo_ctxt) + return a.r0 +}; + +|runtime/cgo/*.asm| +:TEXT crosscall2(SB),NOSPLIT,$0; + +fork + +|#AntiqueWhite|_cgo_types.go| +:func _cgoexp_xxx_sum(a unsafe.Pointer, n int32, ctxt uintptr) { + fn := _cgoexpwrap_xxx_sum + _cgo_runtime_cgocallback( + _cgoexpwrap_xxx_sum, + ... + ) +}; + +|#AntiqueWhite|_cgo_types.go| +:func _cgoexpwrap_xxx_sum(p0, p1) r0 { + return sum(p0, p1) +}; + +|main.go| +://export sum +func sum(a, b C.int) C.int { + return a + b +}; + +endfork + +|runtime/cgo/*.asm| +:TEXT crosscall2(SB),NOSPLIT,$0; + +endfork + +|_testmain.c| +stop + +@enduml diff --git a/images/ch2-call-c-sum-v2.uml.png b/images/ch2-call-c-sum-v2.uml.png new file mode 100644 index 0000000000000000000000000000000000000000..6c8bbc23b24037882687c2af371f61015f3df8e1 GIT binary patch literal 57266 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�-xI|9$Z6mmjEt_7%dIkm>{;N#)V4;zNy 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. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +digraph G { + subgraph cluster_cgo_package_main { + label = "package main"; + + nocgo_x[label="nocgo_x.go", style=filled, color=gray]; + hello_go[label="hello.go", style=filled, color=orangered4]; + main_go[label="main.go", style=filled, color=darkgreen]; + nocgo_1[label="nocgo_1.go", style=filled, color=gray]; + } + + subgraph cluster_cgo_generated_files { + label = "cgo: generated fileds"; + + main_cgo2_c[label="main.cgo2.c", style=filled, color=green]; + main_cgo1_go[label="main.cgo1.go", style=filled, color=green]; + + hello_cgo2_c[label="hello.cgo2.c", style=filled, color=red]; + hello_cgo1_go[label="hello.cgo1.go", style=filled, color=red]; + + _cgo_gotypes_go[label="_cgo_gotypes.go", shape=box, style=filled, color=dodgerblue]; + _cgo_export_h[label="_cgo_export.h", shape=box, style=filled, color=dodgerblue]; + _cgo_export_c[label="_cgo_export.c", shape=box, style=filled, color=dodgerblue]; + + main_go -> main_cgo1_go -> _cgo_gotypes_go; + main_go -> main_cgo2_c -> _cgo_gotypes_go; + + hello_go -> hello_cgo1_go -> _cgo_gotypes_go; + hello_go -> hello_cgo2_c -> _cgo_gotypes_go; + + _cgo_gotypes_go -> _cgo_export_h; + _cgo_gotypes_go -> _cgo_export_c; + } +} diff --git a/images/ch2-cgo-generated-files.dot.png b/images/ch2-cgo-generated-files.dot.png new file mode 100644 index 0000000000000000000000000000000000000000..dab55affbfaaedf9a85bf546bb1dfc9a5b18ef50 GIT binary patch literal 51673 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 LNPUzr3jTipj{5Ro literal 0 HcmV?d00001 diff --git a/images/ch2-int32-to-char-ptr.plantuml b/images/ch2-int32-to-char-ptr.plantuml new file mode 100644 index 0000000..72d16e1 --- /dev/null +++ b/images/ch2-int32-to-char-ptr.plantuml @@ -0,0 +1,29 @@ +' Copyright 2017 . All rights reserved. +' Use of this source code is governed by a Apache +' license that can be found in the LICENSE file. + +@startuml + +title int32 <=> *C.char + +participant int32 +participant uintptr +participant unsafe.Pointer as unsafe_Pointer +participant "~*C.char" as c_char_ptr + +== Go == + +int32 -> uintptr: int32 to uintptr +uintptr -> unsafe_Pointer: uintptr to unsafe.Pointer + +== CGO == + +unsafe_Pointer -> c_char_ptr: unsafe.Pointer to *C.char +c_char_ptr -> unsafe_Pointer: ~*C.char to unsafe.Pointer + +== Go == + +unsafe_Pointer -> uintptr: unsafe.Pointer to uintptr +uintptr -> int32: uintptr to int32 + +@enduml diff --git a/images/ch2-int32-to-char-ptr.uml.png b/images/ch2-int32-to-char-ptr.uml.png new file mode 100644 index 0000000000000000000000000000000000000000..4aa6190008125af1443f08d55632f9b717e7bb71 GIT binary patch literal 16100 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. All rights reserved. +' Use of this source code is governed by a Apache +' license that can be found in the LICENSE file. + +@startuml + +title qsort + +participant go +participant c + +[--> go: qsort +activate go + +go -> go +activate go #DarkSalmon +note left + go_qsort_compare_info.elemsize = sv.Type().Elem().Size() + go_qsort_compare_info.fn = fn +end note + +deactivate go + +go -> c: C.qsort_proxy(cmp=go_qsort_compare) +activate c +note right +void qsort_proxy( + void* base, size_t num, size_t size, + int (*compare)(const void* a, const void* b) +) { + go_qsort_compare_save_base(base); + qsort(base, num, size, compare); +} +end note + +' begin + c -> c: C.go_qsort_compare_save_base + activate c #DarkSalmon + note right: callback go func + + go <- c: go_qsort_compare_save_base + activate go #DarkSalmon + note left + //export go_qsort_compare_save_base + func go_qsort_compare_save_base(base unsafe.Pointer) { + go_qsort_compare_info.base = uintptr(base) + } + var go_qsort_compare_info struct { + base uintptr + elemsize uintptr + fn func(a, b int) int + sync.RWMutex + } + end note + + go -> c: go_qsort_compare_save_base done + deactivate go + + deactivate c +' end + +loop + c -> c: C.go_qsort_compare + activate c #DarkSalmon + note right: callback go func + + c -> go: go_qsort_compare + activate go #DarkSalmon + note left + //export go_qsort_compare_save_base + func go_qsort_compare_save_base(base unsafe.Pointer) { + go_qsort_compare_info.base = uintptr(base) + } + end note + + go -> c: go_qsort_compare done + deactivate go + + deactivate c +end + +go <- c: C.qsort_proxy done +deactivate c + +[<-- go: done +deactivate go + +@enduml diff --git a/images/ch2-qsort-v2.uml.png b/images/ch2-qsort-v2.uml.png new file mode 100644 index 0000000000000000000000000000000000000000..a197397e4c4ef821665cf2ecca98e48bcb6d4f7c GIT binary patch literal 50324 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 z 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 Ljz;?N%lG~lf-(yc literal 0 HcmV?d00001 diff --git a/images/ch2-x-ptr-to-y-ptr.plantuml b/images/ch2-x-ptr-to-y-ptr.plantuml new file mode 100644 index 0000000..7333271 --- /dev/null +++ b/images/ch2-x-ptr-to-y-ptr.plantuml @@ -0,0 +1,23 @@ +' Copyright 2017 . All rights reserved. +' Use of this source code is governed by a Apache +' license that can be found in the LICENSE file. + +@startuml + +title *X <=> *Y + +participant "~*X" as x_ptr +participant unsafe.Pointer as unsafe_Pointer +participant "~*Y" as y_ptr + +== *X => *Y == + +x_ptr -> unsafe_Pointer: ~*X to unsafe.Pointer +unsafe_Pointer -> y_ptr: unsafe.Pointer to *Y + +== *Y => *X == + +y_ptr -> unsafe_Pointer: ~*Y to unsafe.Pointer +unsafe_Pointer -> x_ptr: unsafe.Pointer to *X + +@enduml diff --git a/images/ch2-x-ptr-to-y-ptr.uml.png b/images/ch2-x-ptr-to-y-ptr.uml.png new file mode 100644 index 0000000000000000000000000000000000000000..574ece57ae47876d7be4c2f1e3bc4e528d949c6a GIT binary patch literal 9685 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. All rights reserved. +' Use of this source code is governed by a Apache +' license that can be found in the LICENSE file. + + +'var p []X +'var q []Y // q = p + +'pHdr := (*reflect.SliceHeader)(unsafe.Pointer(&p)) +'qHdr := (*reflect.SliceHeader)(unsafe.Pointer(&q)) + +'pHdr.Data = qHdr.Data +'pHdr.Len = qHdr.Len * unsafe.Sizeof(q[0]) / unsafe.Sizeof(p[0]) +'pHdr.Cap = qHdr.Cap * unsafe.Sizeof(q[0]) / unsafe.Sizeof(p[0]) + + +@startuml + +title []X <=> []Y + +participant "var x []X\nvar y []Y" as slice +participant "var px *SliceHeader\nvar py *SliceHeader" as slice_header + +== []X and []Y to *reflect.SliceHeader == + +slice -> slice_header: px := (*reflect.SliceHeader)(unsafe.Pointer(&x))\npy := (*reflect.SliceHeader)(unsafe.Pointer(&y)) + +== copy *px to *py == + +slice_header -> slice_header: ~*py = *px + +== y changed by *py == + +slice -> slice: y = x + +@enduml diff --git a/images/ch2-x-slice-to-y-slice.uml.png b/images/ch2-x-slice-to-y-slice.uml.png new file mode 100644 index 0000000000000000000000000000000000000000..9b6ad2bcf851affe06485f93e6a0401f77e2f087 GIT binary patch literal 14544 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 Date: Sun, 18 Feb 2018 04:28:16 +0800 Subject: [PATCH 17/19] =?UTF-8?q?ch2-3:=20=E5=A2=9E=E5=8A=A0cgo=E7=94=9F?= =?UTF-8?q?=E6=88=90=E7=9A=84=E4=B8=AD=E9=97=B4=E6=96=87=E4=BB=B6=E6=8F=8F?= =?UTF-8?q?=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ch2-cgo/ch2-03-basic.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ch2-cgo/ch2-03-basic.md b/ch2-cgo/ch2-03-basic.md index ca77baa..503a4a2 100644 --- a/ch2-cgo/ch2-03-basic.md +++ b/ch2-cgo/ch2-03-basic.md @@ -169,3 +169,13 @@ go build -tags="windows,debug" ``` 其中`linux,386`中linux和386用逗号链接表示AND的意思;而`linux,386`和`darwin,!cgo`之间通过空白分割来表示OR的意思。 + +## CGO生成的中间文件 + +要了解CGO技术的底层秘密首先需要了解CGO生成了哪些中间文件。我们可以在构建一个cgo包时增加一个`-work`输出中间生成文件所在的目录并且在构建完成时保留中间文件。如果是比较简单的cgo代码我们也可以直接通过手工调用`go tool cgo`命令来查看生成的中间文件。 + +在一个Go源文件中,如果出现了`import "C"`指令则表示将调用cgo命令生成对应的中间文件。下图是cgo生成的中间文件的简单示意图: + +![](../images/ch2-cgo-generated-files.dot.png) + +包中有4个Go文件,其中nocgo开头的文件中没有`import "C"`指令,其它的2个文件则包含了cgo代码。cgo命令会为每个包含了cgo代码的Go文件创建2个中间文件,比如 main.go 会分别创建 main.cgo1.go 和 main.cgo2.c 两个中间文件。然后会为整个包创建一个 `_cgo_gotypes.go` Go文件,其中包含Go语言部分辅助代码。此外还会创建一个 `_cgo_export.h` 和 `_cgo_export.c` 文件,对应Go语言导出到C语言的类型和函数。 From 135888686c366f604846d01e52716e25cde924e7 Mon Sep 17 00:00:00 2001 From: chai2010 Date: Sun, 18 Feb 2018 05:07:51 +0800 Subject: [PATCH 18/19] =?UTF-8?q?ch2-2:=20=E5=AE=8C=E5=96=84=E6=8C=87?= =?UTF-8?q?=E9=92=88=E8=BD=AC=E5=8C=96=E7=9A=84=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ch2-cgo/ch2-02-cgo-types.md | 42 +++++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/ch2-cgo/ch2-02-cgo-types.md b/ch2-cgo/ch2-02-cgo-types.md index 84dfc2b..ee55f4d 100644 --- a/ch2-cgo/ch2-02-cgo-types.md +++ b/ch2-cgo/ch2-02-cgo-types.md @@ -356,17 +356,23 @@ typedef struct { void *data; GoInt len; GoInt cap; } GoSlice; 在C语言中可以通过`GoString`和`GoSlice`来访问Go语言的字符串和切片。如果是Go语言中数组类型,可以将数组转为切片后再行转换。如果字符串或切片对应的底层内存空间由Go语言的运行时管理,那么在C语言中不能长时间保存Go内存对象。 + 关于CGO内存模型的细节在稍后章节中会详细讨论。 -## 指针和切片 +## 指针间的转换 -C语言和Go语言指针的转换可以看做是两种不同类型的指针之间的转换。在Go语言中我们无法在不同类型之间做转换,因此不同类型的指针之间也存在此限制。由于任意类型的指针均可和`unsafe.Pointer`相互转换,所以我们可以以`unsafe.Pointer`作为中间桥接类型实现不同类型指针之间的转换。 +在C语言中,不同类型的指针是可以显式或隐式转换的,如果是隐式只是会在编译时给出一些警告信息。但是Go语言对于不同类型的转换非常严格,任何C语言中可能出现的警告信息在Go语言中都可能是错误!指针是C语言的灵魂,指针间的自由转换也是cgo代码中经常要解决的第一个重要的问题。 + +在Go语言中两个指针的类型完全一致则不需要转换可以直接通用。如果一个指针类型是用type命令在另一个指针类型基础之上构建的,换言之两个指针底层是相同完全结构的指针,那么我我们可以通过直接强制转换语法进行指针间的转换。但是cgo经常要面对的是2个完全不同类型的指针间的转换,原则上这种操作在纯Go语言代码是严格禁止的。 + +cgo存在的一个目的就是打破Go语言的禁制,恢复C语言应有的指针的自由转换和指针运算。以下代码演示了如何将X类型的指针转化为Y类型的指针: ```go var p *X @@ -376,7 +382,31 @@ q = (*Y)(unsafe.Pointer(p)) // *X => *Y p = (*X)(unsafe.Pointer(q)) // *Y => *X ``` -再结合`reflect.SliceHeader`类型,我们可以实现`[]X`和`[]Y`类型的切片转换: +为了实现X类型指针到Y类型指针的转换,我们需要借助`unsafe.Pointer`作为中间桥接类型实现不同类型指针之间的转换。`unsafe.Pointer`指针类型类似C语言中的`void*`类型的指针。 + +下面是指针间的转换流程的示意图: + +![](../images/ch2-x-ptr-to-y-ptr.uml.png) + +任何类型的指针都可以通过强制转换为`unsafe.Pointer`指针类型去掉原有的类型信息,然后再重新赋予新的指针类型而达到指针间的转换的目的。 + +## 数值和指针的转换 + +不同类型指针间的转换看似复杂,但是在cgo中已经算是比较简单的了。在C语言中经常遇到用普通数值表示指针的场景,也就是说如何实现数值和指针的转换也是cgo需要面对的一个问题。 + +为了严格控制指针的使用,Go语言禁止将数值类型直接转为指针类型!不过,Go语言针对`unsafe.Pointr`指针类型特别定义了一个uintptr类型。我们可以uintptr为中介,实现数值类型到`unsafe.Pointr`指针类型到转换。再结合前面提到的方法,就可以实现数值和指针的转换了。 + +下面流程图演示了如何实现int32类型到C语言的`char*`字符串指针类型的相互转换: + +![](../images/ch2-int32-to-char-ptr.uml.png) + +转换分为几个阶段,在每个阶段实现一个小目标:首先是int32到uintptr类型,然后是uintptr到`unsafe.Pointr`指针类型,最后是`unsafe.Pointr`指针类型到`*C.char`类型。 + +## 切片间的转换 + +在C语言中数组也一种指针,因此两个不同类型数组之间到转换和指针间转换基本类似。但是在Go语言中,数组或数组对应到切片都不再是指针类型,因为我们也就无法直接实现不同类型到切片之间的转换。 + +不过Go语言的reflect包提供了切片类型到底层结构,再结合前面讨论到不同类型之间到指针转换技术就可以实现`[]X`和`[]Y`类型的切片转换: ```go var p []X @@ -390,6 +420,10 @@ pHdr.Len = qHdr.Len * unsafe.Sizeof(q[0]) / unsafe.Sizeof(p[0]) pHdr.Cap = qHdr.Cap * unsafe.Sizeof(q[0]) / unsafe.Sizeof(p[0]) ``` -如果X和Y类型的大小不同,需要重新设置Len和Cap属性。需要注意的是,如果X或Y是空类型,上述代码中可能导致除0错误,实际代码需要根据情况酌情处理。 +不同切片类型之间转换到思路是先为构造一个空的目标切片,然后用原有的切片底层数据填充目标切片。如果X和Y类型的大小不同,需要重新设置Len和Cap属性。需要注意的是,如果X或Y是空类型,上述代码中可能导致除0错误,实际代码需要根据情况酌情处理。 + +下面演示了切片间的转换的具体流程: + +![](../images/ch2-x-slice-to-y-slice.uml.png) 针对CGO中常用的功能,作者封装了 "github.com/chai2010/cgo" 包,提供基本的转换功能,具体的细节可以参考实现代码。 From 1c11ad083c52910d9b63d7c5528715bdcca090b8 Mon Sep 17 00:00:00 2001 From: chai2010 Date: Sun, 18 Feb 2018 05:18:31 +0800 Subject: [PATCH 19/19] ch1-1: fix typo --- ch1-basic/ch1-01-genesis.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch1-basic/ch1-01-genesis.md b/ch1-basic/ch1-01-genesis.md index 7a8afc0..d8a7685 100644 --- a/ch1-basic/ch1-01-genesis.md +++ b/ch1-basic/ch1-01-genesis.md @@ -50,7 +50,7 @@ func main() { 将以上代码保存到`hello.go`文件中。因为代码中有非ASCII的中文字符,我们需要将文件的编码显式指定为无BOM的UTF8编码格式(源文件采用UTF8编码是Go语言规范所要求的)。然后进入命令行并切换到`hello.go`文件所在的目录。目前我们可以将Go语言当作脚本语言,在命令行中直接输入`go run hello.go`来运行程序。如果一切正常的话。应该可以在命令行看到输出"你好, 世界!"的结果。 -现在,让我们简单介绍一下程序。所有的Go程序,都是由最基本的函数和变量构成,函数和变量被组织到一个个单独的Go源文件中,这些源文件再按照作者的意图组织成合适的package,最终这些package再有机地组成一个完成的Go语言程序。其中,函数用于包含一系列的语句(指明要执行的操作序列),以及执行操作时存放数据的变量。我们这个程序中函数的名字是main。虽然Go语言中,函数的名字没有太多的限制,但是main包中的main函数默认是每一个可执行程序的入口。而package则用于包装和组织相关的函数、变量和常量。在使用一个package之前,我们需要使用import语句导入包。例如,我们这个程序中导入了fmt包(fmt是format单词的缩写,表示格式化相关的包),然后我们才可以使用fmt包中的Println函数。 +现在,让我们简单介绍一下程序。所有的Go程序,都是由最基本的函数和变量构成,函数和变量被组织到一个个单独的Go源文件中,这些源文件再按照作者的意图组织成合适的package,最终这些package再有机地组成一个完整的Go语言程序。其中,函数用于包含一系列的语句(指明要执行的操作序列),以及执行操作时存放数据的变量。我们这个程序中函数的名字是main。虽然Go语言中,函数的名字没有太多的限制,但是main包中的main函数默认是每一个可执行程序的入口。而package则用于包装和组织相关的函数、变量和常量。在使用一个package之前,我们需要使用import语句导入包。例如,我们这个程序中导入了fmt包(fmt是format单词的缩写,表示格式化相关的包),然后我们才可以使用fmt包中的Println函数。 而双引号包含的“你好, 世界!”则是Go语言的字符串面值常量。和C语言中的字符串不同,Go语言中的字符串内容是不可变更的。在以字符串作为参数传递给fmt.Println函数时,字符串的内容并没有被复制——传递的仅仅是字符串的地址和长度(字符串的结构在`reflect.StringHeader`中定义)。在Go语言中,函数参数都是以复制的方式(不支持以引用的方式)传递(比较特殊的是,Go语言闭包函数对外部变量是以引用的方式使用)。