Skip to content
/ ffiasm Public
forked from idyllicvision/ffiasm

Intel assembly finite field library generator

License

Notifications You must be signed in to change notification settings

nixw4/ffiasm

This branch is 7 commits ahead of, 16 commits behind idyllicvision/ffiasm:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
nixw
Aug 6, 2023
b7a64e0 · Aug 6, 2023

History

51 Commits
Nov 20, 2020
Dec 14, 2020
Aug 6, 2023
Feb 22, 2022
Dec 3, 2020
Mar 26, 2020
Nov 4, 2020
Mar 26, 2020
Feb 22, 2022
Mar 26, 2020
Feb 11, 2022
Feb 11, 2022
Dec 14, 2020

Repository files navigation

ffiasm

This package is a script that generates a Finite field Library in Intel64 Assembly

Usage

install g++ nasm ang gmp library if you don't have it.

npm install -g ffiasm
mkdir myProject
cd myProject
buildzqfield -q 21888242871839275222246405745257275088548364400416034343698204186575808495617 -n Fr

You now will have two files fr.cpp, fr.hpp and fr.asm

ls

If you are in linux:

nasm -felf64 fr.asm

If you are in a mac:

nasm -fmacho64 --prefix _ fr.asm

Create a file named main.cpp to use the library

#include <stdio.h>
#include <stdlib.h>
#include "fr.hpp"

int main() {
    Fr_init();

    FrElement a;
    a.type = Fr_SHORT;
    a.shortVal = 2;

    FrElement b;
    b.type = Fr_SHORT;
    b.shortVal = 6;

    FrElement c;

    Fr_mul(&c, &a, &b);

    char *c1 = Fr_element2str(&c);
    printf("Result: %s\n", c1);
    free(c1);
}

Compile it

g++ main.cpp fr.o fr.cpp -o example -lgmp

Run it

./example

Benchmark

npm run benchmark

License

ffiasm is part of the iden3 project copyright 2020 0KIMS association and published with GPL-3 license. Please check the COPYING file for more details.

About

Intel assembly finite field library generator

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Assembly 35.8%
  • C++ 29.6%
  • EJS 20.7%
  • JavaScript 13.8%
  • C 0.1%