golang联合汇编程序开发

上篇讲了怎么利用iso c和golang联合开发。这里讲下怎么利用汇编程序开发基本类库,然后提供给golang语言调用。

为什么有了golang语言还要说汇编程序,这是因为在现在golang提供的库还是不全的,有时候针对一些特殊硬件的特性我们不得不使用一些底层的东西来更好的利用这些特性。当然还有一个更重要的地方是读懂golang的源代码,因为在golang中有很多地方都是使用了汇编程序和c程序,这样为了更好的理解golang语言我们不得不去看这些代码。

在golang中汇编程序使用的是plan 9 assembler 而c语言使用的不是iso c 而是plan 9 c。具体这些语言有什么特别的地方google下就可以拉。这里演示下怎么在golang中调用汇编程序提供方法吧。

//first.s
TEXT    first·Add(SB),7,$0
        MOVL 4(SP),AX
        ADDL 8(SP),AX
        MOVL AX,12(SP)
        RET

 这段代码足够简单,就是把传进来的两个参数作加法,然后把结果返回。注意first后面的那个点有什么不一样!

//first.go
package first

func Add(a,b int) int

 这段代码就更加简单拉,它作的就是Add方法的声明。有点类似c的头文件吧。

//main.go
package main

import "fmt"
import "first"

func main() {
    fmt.Println(first.Add(14,13))
}

 这段代码也是比较简单的,就是使用刚才定义的Add方法做下14+23的加法运算,然后把结果打印出来。

编译运行脚本

# 8g -o _go_.8 first.go
# 8a first.s
# gopack grc first.a *.8
# mv first.a $GOROOT/pkg/$GOOS_$GOARCH/
# 8g main.go
# 8l main.8
# ./8.out 
27
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值