Stars specifying wasm

This commit is contained in:
Jordi Baylina
2018-10-17 18:20:30 +02:00
parent ac9f051067
commit 2fc1bf5e97
8 changed files with 2502 additions and 13 deletions

36
wasm/AddSum.cpp Normal file
View 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
View File

53
wasm/wasmmodule.c Normal file
View 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