Golang汇编Sample

http://davidwong.fr/goasm/add

接下来就是对这组Sample的测试(simple搬砖)

目前的版本是1.9 好像方法都简单了不少(智能). 对于这个例子可以简单的测试.


命名很松散:

1. .s文件后缀小写. 并且文件名任意. 只要包含了我们的函数实现即可.

2. 函数中x+0(SB) y+0(SB) 前面x,y 都是名字. 而在go中声明的函数原型中的形参名x, y都是任意. 和.s实现没有任何关系. (只有参数位置有意义)

go build即可编译.

它总是很聪明的找到package main以及没有函数体的函数的汇编实现.

linux下面输入"点" Ctrl + Shift + u b7回车.


http://davidwong.fr/goasm/hello

这个例子来自于go tool compile -S hello.go   (汇编输出到stdout)


http://davidwong.fr/goasm/sync-atomic

这个例子在JMP这条指令可能会出问题:

     JMP ·SwapUint32(SB)

# test/as/cinco
runtime.pclntab: relocation target main.SwapUint32.args_stackmap not defined
runtime.pclntab: undefined: "main.SwapUint32.args_stackmap"
若·SwapInt32直接采用下面的实现就没有问题(省略JMP以及·SwapUint32这个函数).

消除错误:  要在go文件中声明SwapUint32这个函数. (参数及返回值都是uint32) .


The Go compiler will look for files ending in _GOOS or _GOARCH or _GOOS_GOARCH toconsider which assembly file to compile. See go/build.


http://davidwong.fr/goasm/sqrt

另外在1.9的源码中的.s文件中可以找到这样的字样:

// +build amd64,!gccgo,!appengine















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值