相关疑难解决方法(0)

Go没有链接我的程序集:未定义的外部函数

我正在尝试编写一些SIMD,主要用于学习目的.我知道Go可以链接汇编,但我无法让它正常工作.

这是我可以做的最小的例子(元素向量乘法):

vec_amd64.s(注意:实际文件下面有一个空白行,RET因为它会导致错误)

// func mul(v1, v2 Vec4) Vec4
TEXT .mul(SB),4,$0-48
    MOVUPS v1+0(FP),  X0
    MOVUPS v2+16(FP), X1
    MULPS  X1, X0
    // also tried ret+32 since I've seen some places do that
    MOVUPS X0, toReturn+32(FP)
    RET
Run Code Online (Sandbox Code Playgroud)

vec.go

package simd

type Vec4 [4]float32

func (v1 Vec4) Mul(v2 Vec4) Vec4 {
    return Vec4{v1[0] * v2[0], v1[1] * v2[1], v1[2] * v2[2], v1[3] * v2[3]}
}

func mul(v1, v2 Vec4) Vec4
Run Code Online (Sandbox Code Playgroud)

simd_test.go

package simd

import (
    "testing"
)

func TestMul(t *testing.T) …
Run Code Online (Sandbox Code Playgroud)

assembly go

82
推荐指数
1
解决办法
2219
查看次数

g ++ unicode变量名

我想在g ++中使用unicode变量名.

它似乎不起作用.

g ++不支持unicode变量名,...还是有一些unicode子集(我从中没有测试过).

谢谢!

variables unicode g++

8
推荐指数
2
解决办法
5607
查看次数

C中的非ASCII字符

我正在查看谷歌go的运行时源代码(在https://go.googlecode.com/hg/src/pkg/runtime/),似乎他们使用特殊字符作为其函数名称,·.(例如,访问https://go.googlecode.com/hg/src/pkg/runtime/cgocall.c).这是否被主要编译器接受?它不是ANSI C,是吗?或者它只是一些宏观魔法?

谢谢!

c namespaces ansi naming-conventions standards-compliance

5
推荐指数
1
解决办法
1042
查看次数

Go编译器运行时的语法和语义

我在go运行时查看了runtime.c文件

  /usr/local/go/src/pkg/runtime
Run Code Online (Sandbox Code Playgroud)

并看到以下函数定义:

   void
   runtime?pprof·runtime_cyclesPerSecond(int64 res)
   {...}
Run Code Online (Sandbox Code Playgroud)

int64
runtime·tickspersecond(void)
{...}
Run Code Online (Sandbox Code Playgroud)

并且有很多声明像

void    runtime·hashinit(void);
Run Code Online (Sandbox Code Playgroud)

在runtime.h中.

我之前没有看到过这种C语法(特别是带有斜杠的语法似乎很奇怪).这是std C或某种plan9方言的一部分吗?

c namespaces go

2
推荐指数
2
解决办法
143
查看次数