SprintDLL's copyslot command supports some offsets and pointer derefererencing, but not combinations of those. Therefore, it always takes multiple instructions to get the value pointed to by a field, and it's literally impossible to deal with arrays. So today I started working on improvements to the instruction to allow things like someSlot field 5 dereferenced as a source or destination. I have a function to parse multiple qualifiers, but there's a snag: it's not possible for SprintDLL to know the kind of value at such an adjusted location, so it can't know how much to copy. Therefore I'm going to need to introduce a switch on copyslot to allow the user to specify the size of the destination region.
I also discovered a bug in the existing implementation: specifying qualifiers for the destination but not the source causes the destination's qualifiers to be ignored because of an ill-conceived optimization. The new implementation will fix that.
There's now a predefined zero slot that, unsurprisingly, holds a bunch of zero bytes. It's suitable for zeroing out a region by serving as a source slot in copyslot.
No comments:
Post a Comment