1
0
mirror of https://github.com/chai2010/advanced-go-programming-book.git synced 2025-05-24 04:22:22 +00:00
2018-12-16 12:37:35 +08:00

44 lines
736 B
Go

package main
/*
#include <stdint.h>
int64_t myadd(int64_t a, int64_t b) {
return a+b;
}
*/
import "C"
import (
"asmpkg"
"fmt"
"runtime"
"unsafe"
)
func main() {
if runtime.GOOS == "darwin" {
asmpkg.SyscallWrite_Darwin(1, "hello syscall!\n")
}
if runtime.GOOS == "linux" {
asmpkg.SyscallWrite_Linux(1, "hello syscall!\n")
}
if runtime.GOOS == "windows" {
fmt.Println(asmpkg.CallCAdd_Win64_ABI(
uintptr(unsafe.Pointer(C.myadd)),
123, 456,
))
} else {
fmt.Println(asmpkg.CallCAdd_SystemV_ABI(
uintptr(unsafe.Pointer(C.myadd)),
123, 456,
))
}
var dst = make([]byte, 32)
var src = []byte("1234567890123456789012345678901234567890")
asmpkg.CopySlice_AVX2(dst, src, 32)
fmt.Println(string(dst))
}