Hi Tristan,
Ah, what you want is the use of 'void *' for System.Address.
We didn't choose that because the semantic of System.Address (which includes
arithmetic on the whole address space) doesn't match the void * one.
void* arithmetic of this kind exists, it's a gcc extension to C :)
The issue is not void * vs char *, but the fact that the C standard has
restriction on pointer arithmetic.
I see, -fno-strict-overflow would be needed to get System.Address modulo
arithmetic semantics if it was always turned into void*, which would then
presumably pessimize other code. However this isn't really relevant to
whether Address formal parameters should always be turned into void* or
not.
Ciao, Duncan.
But, you can try to implement this scheme by modifying the runtime. I don't
know if this is a small work or not.
It crashes the front-end, so it's not trivial.
:-)