[Mono-dev] JIT: MonoReg to replace gssize for registers

Mark Mason mmason at upwardaccess.com
Sat Dec 13 13:55:40 EST 2008


Hello,

Not ... necessarily.  The mips/n32 abi is one example.  Code runs in a  
32-bit address space (so pointers, and sizeof(void *) are 32-bits),  
but with 64-bit registers and 64-bit operations available.

This is distinct from n64, which does have 64-bit pointers.

/Mark

On Dec 13, 2008, at 7:01 AM, Zoltan Varga wrote:

> Hi,
>
>  gssize is the size needed to hold a memory address, if the machine
> has 64 bit registers,
> this is 64 bits. On that mips machine, this is 32 bits ?
>
>                  Zoltan
>
> On Thu, Dec 11, 2008 at 8:40 PM, Mark Mason  
> <mmason at upwardaccess.com> wrote:
>> Hello all,
>>
>> Along the same lines as the SIZEOF_VOID_P change, I'd like to offer  
>> the
>> following new type to replace to use of 'gssize' when referring to a
>> machine register. 'gssize' comes from glib, and simply represents the
>> size of an integer -- which is not necessarily always the same as the
>> size of the underlying integer registers.
>>
>> There are some other uses of gssize in mini/ that will need to be
>> updated as well, but this is a start.
>>
>> Comments most welcome.
>>
>> Thanks in advance,
>> Mark
>>
>> Index: mini.h
>> ===================================================================
>> --- mini.h      (revision 121269)
>> +++ mini.h      (working copy)
>> @@ -400,6 +400,13 @@
>>       int size, align;
>> } MonoMemcpyArgs;
>>
>> +/* C type matching the size of a machine register. Not always the  
>> same
>> as 'int' */
>> +#if SIZEOF_REGISTER == 4
>> +typedef gint32 MonoReg;
>> +#elif SIZEOF_REGISTER == 8
>> +typedef gint64 MonoReg;
>> +#endif
>> +
>> struct MonoInst {
>>       guint16 opcode;
>>       guint8  type; /* stack type */
>> @@ -415,7 +422,7 @@
>>               union {
>>                       MonoInst *src;
>>                       MonoMethodVar *var;
>> -                       gssize const_val;
>> +                       MonoReg const_val;
>>                       gpointer p;
>>                       MonoMethod *method;
>>                       MonoMethodSignature *signature;
>>
>>
>> _______________________________________________
>> Mono-devel-list mailing list
>> Mono-devel-list at lists.ximian.com
>> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>>



More information about the Mono-devel-list mailing list