Go与C、汇编之间的调用
Go调用汇编新建如下目录asm├── add│ ├── add.go│ └── add_amd64.s└── main.go在 add.go 中定义一个函数声明,如下:package addfunc Add(a, b uint64) uint64同时在 add.go 的同一目录层级下,新建
Go调用汇编
新建如下目录
asm
├── add
│ ├── add.go
│ └── add_amd64.s
└── main.go
在 add.go 中定义一个函数声明,如下:
package add
func Add(a, b uint64) uint64
同时在 add.go 的同一目录层级下,新建 add_amd64.s 文件,如下:
TEXT ·Add+0(SB),$0-24
MOVQ a+0(FP),BX
MOVQ b+8(FP),BP
ADDQ BP,BX
MOVQ BX,res+16(FP)
RET ;
最后在 main.go 中写入调用代码,如下:
package main
import (
"fmt"
"golang-exercise/asm/add"
)
func main() {
fmt.Println(add.Add(2, 1))
fmt.Println(add.Add(1, 1))
}
输出结果:
3
2