virtual void compile(X86Compiler& c) { c.newFunc(kX86FuncConvDefault, FuncBuilder3<int, int, int, int>()); GpVar v0(c.getGpArg(0)); GpVar v1(c.getGpArg(1)); GpVar v2(c.getGpArg(2)); // Just do something;) c.shl(v0, imm(1)); c.shl(v1, imm(1)); c.shl(v2, imm(1)); // Call function. GpVar address(c.newGpVar()); c.mov(address, imm((sysint_t)(void*)calledFunc)); X86CompilerFuncCall* fCall = c.call(address); fCall->setPrototype(kX86FuncConvDefault, FuncBuilder3<Void, int, int, int>()); fCall->setArgument(0, v2); fCall->setArgument(1, v1); fCall->setArgument(2, v0); // TODO: FuncCall return value. // fCall->setReturn(v0); // c.ret(v0); c.endFunc(); }
virtual void compile(X86Compiler& c) { c.newFunc(kX86FuncConvDefault, FuncBuilder4<Void, int*, int, int, int>()); GpVar dst0(c.getGpArg(0)); GpVar v0(c.getGpArg(1)); c.shl(v0, c.getGpArg(2)); c.ror(v0, c.getGpArg(3)); c.mov(dword_ptr(dst0), v0); c.endFunc(); }