protected override void Compile(CodeContext c) { const int cnt = 7; var p = c.IntPtr("p"); var xv = new XmmVariable[cnt]; int i; for (i = 0; i < cnt; i++) { xv[i] = c.XmmSd("xv" + i); c.SetArgument(i, xv[i]); } c.SetArgument(7, p); c.Addsd(xv[0], xv[1]); c.Addsd(xv[0], xv[2]); c.Addsd(xv[0], xv[3]); c.Addsd(xv[0], xv[4]); c.Addsd(xv[0], xv[5]); c.Addsd(xv[0], xv[6]); c.Movsd(Memory.Ptr(p), xv[0]); }
protected override void Compile(CodeContext c) { var p = c.IntPtr("p"); var fn = c.IntPtr("fn"); var arg = c.XmmSd("arg"); var ret = c.XmmSd("ret"); var fp = Memory.Fn(new Func <double, double>(CalledFunction)); c.SetArgument(0, p); c.Movsd(arg, Memory.Ptr(p)); c.Mov(fn, fp); var call = c.Call(fn, fp); call.SetArgument(0, arg); call.SetReturn(0, ret); c.Ret(ret); }