我从c&下载一个库,当我将它添加到我的项目时,我注意到两个文件

看起来像AsmX8664.s是头文件AsmX8664.hpp的库文件,但我不知道如何将它添加到c项目我尝试使用链接器 - >输入添加它有一个错误消息显示

“无效或损坏的文件:无法读取0x21C9” . 有人知道如何处理这个文件?这就是里面的样子

AsmX8664.hpp

#pragma once

#include <cstdint>


extern "C" {

    std::uint32_t asm_Uint256_add(std::uint32_t dest[8], const std::uint32_t src[8], std::uint32_t enable);

    std::uint32_t asm_Uint256_subtract(std::uint32_t dest[8], const std::uint32_t src[8], std::uint32_t enable);

    std::uint32_t asm_Uint256_shiftLeft1(std::uint32_t dest[8]);

    void asm_Uint256_shiftRight1(std::uint32_t dest[8], std::uint32_t enable);

    void asm_Uint256_replace(std::uint32_t dest[8], const std::uint32_t src[8], std::uint32_t enable);

    void asm_Uint256_swap(std::uint32_t left[8], std::uint32_t right[8], std::uint32_t enable);

    bool asm_Uint256_equalTo(const std::uint32_t left[8], const std::uint32_t right[8]);

    bool asm_Uint256_lessThan(const std::uint32_t left[8], const std::uint32_t right[8]);


    // Computes (uint512 z) = (uint256 x) * (uint256 y), correct for all input values.
    // (i.e. Input values are Uint256, not necessarily FieldInt.)
    void asm_FieldInt_multiply256x256eq512(std::uint32_t z[16], const std::uint32_t x[8], const std::uint32_t y[8]);

    // Computes (uint768 dest) = (uint512 src) * (2^256 + 2^32 + 0x3D1) % 2^768,
    // correct for all input values. If src < modulus^2, then the result does not overflow.
    void asm_FieldInt_multiplyBarrettStep0(std::uint32_t dest[24], const std::uint32_t src[16]);

    // Computes (uint512 dest) = (uint256 src) * (2^256 - 2^32 - 0x3D1), correct for all input values.
    void asm_FieldInt_multiplyBarrettStep1(std::uint32_t dest[16], const std::uint32_t src[8]);

    // Computes (uint288 z) = ((uint512 x) - (uint512 y)) % 2^288, correct for all input values.
    void asm_FieldInt_multiplyBarrettStep2(std::uint32_t z[9], const std::uint32_t x[16], const std::uint32_t y[16]);

}

AsmX8664.s

/* uint32_t asm_Uint256_add(uint32_t dest[8], const uint32_t src[8], uint32_t enable) */
.globl asm_Uint256_add
asm_Uint256_add:
    negq    %rdx
    movq     0(%rsi), %rax
    movq     8(%rsi), %rcx
    movq    16(%rsi), %r8
    movq    24(%rsi), %r9
    andq    %rdx, %rax
    andq    %rdx, %rcx
    andq    %rdx, %r8
    andq    %rdx, %r9
    addq    %rax,  0(%rdi)
    adcq    %rcx,  8(%rdi)
    adcq    %r8 , 16(%rdi)
    adcq    %r9 , 24(%rdi)
    setc    %al
    movzbl  %al, %eax
    retq


/* uint32_t asm_Uint256_subtract(uint32_t dest[8], const uint32_t src[8], uint32_t enable) */
.globl asm_Uint256_subtract
asm_Uint256_subtract:
    negq    %rdx
    movq     0(%rsi), %rax
    movq     8(%rsi), %rcx
    movq    16(%rsi), %r8
    movq    24(%rsi), %r9
    andq    %rdx, %rax
    andq    %rdx, %rcx
    andq    %rdx, %r8
    andq    %rdx, %r9
    subq    %rax,  0(%rdi)
    sbbq    %rcx,  8(%rdi)
    sbbq    %r8 , 16(%rdi)
    sbbq    %r9 , 24(%rdi)
    setc    %al
    movzbl  %al, %eax
    retq