上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 23 下一页
摘要: 汇编语言的为例 汇编语言的真正威力来自两个维度:一是突破框架限制,实现看似不可能的任务;二是突破指令限制,通过高级指令挖掘极致的性能。对于第一个问题,我们将演示如何通过Go汇编语言直接访问系统调用,和直接调用C语言函数。对于第二个问题,我们将演示X64指令中AVX等高级指令的简单用法。 系统调用 系 阅读全文
posted @ 2020-06-05 21:08 Binb 阅读(922) 评论(0) 推荐(0) 编辑
摘要: GO汇编-控制流 程序主要有顺序、分支和循环几种执行流程。本节主要讨论如何将Go语言的控制流比较直观地转译为汇编程序,或者说如何以汇编思维来编写Go语言代码。 顺序执行 顺序执行是我们比较熟悉的工作模式,类似俗称流水账编程。所有不含分支、循环和goto语句,并且没有递归调用的Go函数一般都是顺序执行 阅读全文
posted @ 2020-06-03 13:49 Binb 阅读(530) 评论(0) 推荐(0) 编辑
摘要: GO汇编-函数 终于到函数了!因为Go汇编语言中,可以也建议通过Go语言来定义全局变量,那么剩下的也就是函数了。只有掌握了汇编函数的基本用法,才能真正算是Go汇编语言入门。本章将简单讨论Go汇编中函数的定义和用法。 基本语法 函数标识符通过TEXT汇编指令定义,表示该行开始的指令定义在TEXT内存段 阅读全文
posted @ 2020-06-02 22:07 Binb 阅读(1966) 评论(0) 推荐(0) 编辑
摘要: GO汇编常量和全局变量 程序中的一切变量的初始值都直接或间接地依赖常量或常量表达式生成。在Go语言中很多变量是默认零值初始化的,但是Go汇编中定义的变量最好还是手工通过常量初始化。有了常量之后,就可以衍生定义全局变量,并使用常量组成的表达式初始化其它各种变量。本节将简单讨论Go汇编语言中常量和全局变 阅读全文
posted @ 2020-06-01 21:53 Binb 阅读(1380) 评论(0) 推荐(0) 编辑
摘要: 计算机结构 汇编语言是直面计算机的编程语言,因此理解计算机结构是掌握汇编语言的前提。当前流行的计算机基本采用的是冯·诺伊曼计算机体系结构(在某些特殊领域还有哈佛体系架构)。冯·诺依曼结构也称为普林斯顿结构,采用的是一种将程序指令和数据存储在一起的存储结构。冯·诺伊曼计算机中的指令和数据存储器其实指的 阅读全文
posted @ 2020-06-01 21:16 Binb 阅读(534) 评论(0) 推荐(0) 编辑
摘要: Go汇编初识 对于每一个严肃的Gopher,Go汇编语言都是一个不可忽视的技术。因为哪怕只懂一点点汇编,也便于更好地理解计算机原理,也更容易理解Go语言中动态栈/接口等高级特性的实现原理。而且掌握了Go汇编语言之后,你将重新站在编程语言鄙视链的顶端,不用担心再被任何其它所谓的高级编程语言用户鄙视。 阅读全文
posted @ 2020-05-31 17:55 Binb 阅读(1143) 评论(0) 推荐(0) 编辑
摘要: CGO 编译和链接参数 编译和链接参数是每一个C/C程序员需要经常面对的问题。构建每一个C/C应用均需要经过编译和链接两个步骤,CGO也是如此。 本节我们将简要讨论CGO中经常用到的编译和链接参数的用法。 编译参数:CFLAGS/CPPFLAGS/CXXFLAGS 编译参数主要是头文件的检索路径,预 阅读全文
posted @ 2020-05-30 20:55 Binb 阅读(3874) 评论(0) 推荐(0) 编辑
摘要: CGO静态库和动态库 CGO在使用C/C资源的时候一般有三种形式:直接使用源码;链接静态库;链接动态库。直接使用源码就是在import "C"之前的注释部分包含C代码,或者在当前包中包含C/C源文件。链接静态库和动态库的方式比较类似,都是通过在LDFLAGS选项指定要链接的库方式链接。本节我们主要关 阅读全文
posted @ 2020-05-30 20:46 Binb 阅读(6218) 评论(1) 推荐(0) 编辑
摘要: C++ 类包装 CGO是C语言和Go语言之间的桥梁,原则上无法直接支持C的类。CGO不支持C语法的根本原因是C至今为止还没有一个二进制接口规范(ABI)。一个C类的构造函数在编译为目标文件时如何生成链接符号名称、方法在不同平台甚至是C的不同版本之间都是不一样的。但是C是兼容C语言,所以我们可以通过增 阅读全文
posted @ 2020-05-30 17:58 Binb 阅读(495) 评论(0) 推荐(0) 编辑
摘要: CGO内存模型 CGO是架接Go语言和C语言的桥梁,它使二者在二进制接口层面实现了互通,但是我们要注意因两种语言的内存模型的差异而可能引起的问题。如果在CGO处理的跨语言函数调用时涉及到了指针的传递,则可能会出现Go语言和C语言共享某一段内存的场景。我们知道C语言的内存在分配之后就是稳定的,但是Go 阅读全文
posted @ 2020-05-30 16:51 Binb 阅读(825) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 23 下一页