This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: PDP-10 backend for gcc


Jeffrey A Law <law@cygnus.com> writes:
> > Oh.  But the back end MUST know whether it's operating on pointers or
> > integers.  Byte pointer subtraction on a PDP-10 is much different from
> > integer subtraction.  Basically, PDP-10 byte pointers are not are not
> > integers, at least not with respect to how arithmetic are performed on
> > them.
> You've got a significant problem then.  You're most likely going to have
> to use something like PSImode or PDImode or something new to represent
> your pointers.
> 
> Fundamentally GCC assumes that arithmetic on pointer types works just
> like arithmetic on integer types.

There are two kinds of pointers:

  Word pointers.  These are 30-bit values in 36-bit words, and are
  used to point to anything at least one word in size.  Integer
  arithmetic works.  I think PSImode will work here.

  Byte[*] pointers.  These are 36-bit values in 36-bit words.  The
  lower 30 bits is a word pointer, and the upper 6 bits is a code
  to locate the byte (i.e. char or short) within the word pointed
  to.  Since normal ints are 36-bits, SImode can't be used for byte
  pointers.  Maybe a new mode will have to be invented?

[*] On a PDP-10 a "byte" is defined as any contigous bit field in a
36-bit word.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]