mirror of
https://github.com/arnaucube/circom.git
synced 2026-02-07 03:06:42 +01:00
Stars specifying wasm
This commit is contained in:
36
wasm/AddSum.cpp
Normal file
36
wasm/AddSum.cpp
Normal file
@@ -0,0 +1,36 @@
|
||||
|
||||
class Value {
|
||||
|
||||
}
|
||||
|
||||
class Var : Value {
|
||||
|
||||
}
|
||||
|
||||
class Ctx {
|
||||
char *currentComponent;
|
||||
|
||||
Var getParam(char *);
|
||||
Var getSignal(char *, ...);
|
||||
|
||||
Var newVar(char *);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void Num2Bits::Num2Bits(ctx) {
|
||||
Var n = ctx.getParam("n");
|
||||
Var in = ctx.getSignal("in");
|
||||
Var out = ctx.getSignal("out");
|
||||
(Var lc1 = ctx.newVar()) = _0x0;
|
||||
|
||||
for ((Var i = ctx.newVar()) = _0x0 ; i<n; i++ ) {
|
||||
out[i] = (in >> i) & _0x1;
|
||||
assert(out[i]*(out[i] - _0x1), _0x0);
|
||||
lc1 += out[i] * (2**i);
|
||||
}
|
||||
|
||||
assert(lc1, in);
|
||||
}
|
||||
0
wasm/context.h
Normal file
0
wasm/context.h
Normal file
53
wasm/wasmmodule.c
Normal file
53
wasm/wasmmodule.c
Normal file
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
|
||||
(module
|
||||
(export "get_signal_ptr" (func $get_signal_ptr))
|
||||
(export "solve" (func $solve))
|
||||
(func $get_signal_ptr (result i32)
|
||||
(i32.const 22)
|
||||
)
|
||||
(func $solve (result i32)
|
||||
(i32.const 22)
|
||||
)
|
||||
)
|
||||
|
||||
*/
|
||||
|
||||
|
||||
typedef int u32;
|
||||
typedef u32 u256[8];
|
||||
|
||||
struct Signals {
|
||||
u256 one;
|
||||
u256 output1;
|
||||
u256 output2;
|
||||
u256 pubInput1;
|
||||
u256 pubInput2;
|
||||
u256 prvInput1;
|
||||
u256 prvInput2;
|
||||
u256 internal1;
|
||||
u256 internal2;
|
||||
};
|
||||
|
||||
static Signals signals;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
u256 *get_signal_ptr() {
|
||||
return (u256 *)&signals;
|
||||
}
|
||||
|
||||
int solve() {
|
||||
for (int i=0; i<8; i++) {
|
||||
signals.internal1[i] = signals.pubInput1[i];
|
||||
signals.internal2[i] = signals.pubInput2[i];
|
||||
signals.output1[i] = signals.prvInput1[i];
|
||||
signals.output2[i] = signals.prvInput2[i];
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
Reference in New Issue
Block a user