Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
特定于体系结构的Golang功能文档_Go_Godoc - Fatal编程技术网

特定于体系结构的Golang功能文档

特定于体系结构的Golang功能文档,go,godoc,Go,Godoc,我有一个函数,我想为它提供一个汇编实现 在amd64体系结构上。为了便于讨论,让我们假设这是一个 Add函数,但实际上要比这个复杂得多。我有 程序集版本正在运行,但我的问题是如何显示godoc 正确地我有一种感觉,这是目前不可能的,但我想寻求 忠告 更多详情: 此函数的程序集实现只包含几个 说明书特别是,调用该函数的成本是一个很大的问题 整个成本的重要部分 它使用特殊说明(BMI2),因此只能使用 在进行CPUID功能检查之后 实施过程非常简单。在高级别: 在通用(非amd64情况)中,通

我有一个函数,我想为它提供一个汇编实现 在
amd64
体系结构上。为了便于讨论,让我们假设这是一个
Add
函数,但实际上要比这个复杂得多。我有 程序集版本正在运行,但我的问题是如何显示godoc 正确地我有一种感觉,这是目前不可能的,但我想寻求 忠告

更多详情:

  • 此函数的程序集实现只包含几个 说明书特别是,调用该函数的成本是一个很大的问题 整个成本的重要部分
  • 它使用特殊说明(
    BMI2
    ),因此只能使用 在进行
    CPUID
    功能检查之后
实施过程非常简单。在高级别:

  • 在通用(非amd64情况)中,通过委托给
    addGeneric
  • amd64
    情况下,函数实际上是一个变量,最初设置为
    addGeneric
    但如果
    cpuid
    检查通行证
这种方法有效。但是,godoc输出很糟糕,因为
amd64
case函数实际上是一个变量。注:godoc似乎是 获取与运行它的机器相同的构建标记。我不确定 godoc.org会做什么

考虑的备选方案:

  • Add
    功能委托给
    addImpl
    。然后我们玩一些类似的把戏 替换
    amd64
    案例中的
    addImpl
    。这方面的问题是(在我看来) 实验)Go似乎无法内联调用和程序集 现在被包装在两个函数调用中。因为组件已经很小了 这对性能有明显的影响
  • amd64
    案例中,我们定义了一个普通函数
    Add
    ,该函数具有
    useAsm
    检查它的内部,并根据需要调用
    addGeneric
    addAsm
    中的一个 结果。这将对性能产生更糟糕的影响
所以我想问题是:

  • 有没有更好的方法来构造代码以实现性能I 需要,并将其正确地显示在文档中
  • 如果没有其他选择,是否有其他方法“欺骗”戈多克
  • 有关如何执行此操作的示例,请参见

    • 写一篇
    • 写一封信
    • 对于每个体系结构,在汇编程序中编写一个函数,该函数表示或

    要处理cpuid检查,请在
    init()
    中设置一个包变量,并在程序集实现中基于该变量有条件地跳转。

    谢谢,这非常有用!但是,它不能完全处理
    cpuid
    检查。我在
    运行时
    包中找到了有用的示例代码。例如,添加一个.来处理cpuid检查,在init()中设置一个包变量,并在程序集实现中基于该变量有条件地跳转