- status: open --> closed-accepted
- assigned_to: Anders
It seems silly to Alloc and Free small structs used by functions like GetVersionEx and GetWindowRect when we already have 20+ memory blocks (each >= 1024k) just sitting there, all we need is a syntax to access the register memory directly.
I chose £ as the type character. Using $ would mean scripts have to escape and otherwise avoid variable expansion and £ is $'s little brother ;) It is however not 7bit ASCII safe, could this cause problems in MBCS scripts that don't have a £ in their codepage?
System::Call "user32::GetClientRect(p $hwndparent, £ r0)" System::Call "*$0(i,i,i.r1,i.r2)" DetailPrint ClientRect=$1x$2
The start of the register memory block is set to a string with the starting address of the usable/free memory (located directly after the string). This means that "..(£r0r1)" works and is valid but pointless since $0 already has a usable string with the address. "..(£r0r0)" is basically a nop. "..(£.r1)" is not supported and will probably crash or access undefined memory. This makes this type a little special so I added some extra notes in the readme.