1
0
mirror of https://github.com/chai2010/advanced-go-programming-book.git synced 2025-06-05 16:54:20 +00:00
2018-07-23 07:30:48 +08:00

37 lines
473 B
Go

package main
/*
#include <stdio.h>
#include <stdint.h>
int64_t add(int64_t a, int64_t b) {
return a+b;
}
void print_add_addr() {
printf("%x\n", (int)(add));
}
*/
import "C"
import (
"asmpkg"
"fmt"
"unsafe"
)
//go:noinline
//go:nosplit
func main() {
println(C.add(1, 2))
C.print_add_addr()
fmt.Printf("%x\n", uintptr(unsafe.Pointer(C.add)))
if true {
c := asmpkg.CallCAdd(
uintptr(unsafe.Pointer(C.add)),
1, 2,
)
fmt.Printf("result: %x\n", c)
}
}