- simcall->call = call;
- memset(&simcall->result, 0, sizeof(simcall->result));
- marshal(simcall->args[0], std::forward<A>(a));
- marshal(simcall->args[1], std::forward<B>(b));
- marshal(simcall->args[2], std::forward<C>(c));
- marshal(simcall->args[3], std::forward<D>(d));
- marshal(simcall->args[4], std::forward<E>(e));
- marshal(simcall->args[5], std::forward<F>(f));
- marshal(simcall->args[6], std::forward<G>(g));
- marshal(simcall->args[7], std::forward<H>(h));
+ marshal(simcall->args[I], a);
+ marshalArgs<I+1>(simcall, b...);