gpt4 book ai didi

c - 如何在 gcc/mingw 内联汇编中添加简单的 float4

转载 作者:行者123 更新时间:2023-11-30 15:26:46 32 4
gpt4 key购买 nike

我可能需要得到类似的东西,但是在奇怪的 GCC 内联汇编中

void add4(float* a, float* b, float* out) 
{
mov edx, [esp+4]
movaps xmm0, oword [edx+0]
mov edx, [esp+8]
movaps xmm1, oword [edx+0]
addps xmm0, xmm1
mov edx, [esp+12]
movaps oword [edx+0], xmm0
ret
}

1) 一个主题是如何将其打包到 gcc 内联语法中2)第二个主题是如何重写它(也许摆脱显式内存访问)使这样的内联例程与周围的 GCC (mingw32) 代码很好地集成

最佳答案

有两种方法可以做到这一点。

第一种方法是使用 asm关键字将内联汇编作为文字字符串包含在内。您还可以传入函数参数,GCC 将生成访问它们所需的代码。这将使您不必手动使用内存访问,特别是在处理不同的调用约定时。这是在 C 函数中嵌入汇编的一般方法。

第二种方法更具体地针对您想要执行的操作,是使用 SSE 内在函数(由 <xmmintrin.h> 提供)。生成的代码看起来像普通的 C 函数调用,但编译器将生成相应的指令而不是一堆函数调用。有关如何使用这些内在函数的更多信息,请参阅 Intel Intrinsics Guide

关于c - 如何在 gcc/mingw 内联汇编中添加简单的 float4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27290014/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com