sp_delta
, args
, or ret_val
parameters to SimCC, you should use the new class SimCCUsercall
, which lets (requires) you to be explicit about the locations of each argument.is_fp
and size
was optional, but now these parameters will no longer be accepted and a SimType
will be required.call_state
and callable
and SimProcedure.call()
, now require a prototype to be passed to them. You'd be surprised how many bugs we found in our own code from enforcing this requirement!char*
. Is this a pointer to a single char or a pointer to an array of chars? The answer changes how we typecheck the values you pass in. If you're passing a PointerWrapper wrapping a large value which should be treated as an array of chars, you should construct your pointerwrapper as PointerWrapper(foo, buffer=True)
. The buffer argument to PointerWrapper now instructs SimCC to treat the data to be serialized as an array of the child type instead of as a scalar.func_ty
-> prototype