Re: Safe Pointers at the Intermediate Language or Hardware Level

glen herrmannsfeldt <gah@ugcs.caltech.edu>
Tue, 11 Feb 2014 01:03:24 +0000 (UTC)

          From comp.compilers

Related articles
Safe Pointers at the Intermediate Language or Hardware Level seimarao@gmail.com (2014-02-10)
Re: Safe Pointers at the Intermediate Language or Hardware Level flaps@dgp.toronto.edu (2014-02-11)
Re: Safe Pointers at the Intermediate Language or Hardware Level gah@ugcs.caltech.edu (glen herrmannsfeldt) (2014-02-11)
Re: Safe Pointers at the Intermediate Language or Hardware Level ivan@ootbcomp.com (Ivan Godard) (2014-02-10)
Re: Safe Pointers at the Intermediate Language or Hardware Level wclodius@earthlink.net (2014-02-10)
Re: Safe Pointers at the Intermediate Language or Hardware Level seimarao@gmail.com (Seima Rao) (2014-02-11)
Re: Safe Pointers at the Intermediate Language or Hardware Level ivan@ootbcomp.com (Ivan Godard) (2014-02-12)
| List of all articles for this month |

From: glen herrmannsfeldt <gah@ugcs.caltech.edu>
Newsgroups: comp.compilers
Date: Tue, 11 Feb 2014 01:03:24 +0000 (UTC)
Organization: Aioe.org NNTP Server
References: 14-02-007
Keywords: design, debug
Posted-Date: 11 Feb 2014 00:41:17 EST

seimarao@gmail.com wrote:


> Its been a long time since Java & .Net introduced safe address
> types to the computing world.


> My question is have we settled on what could be a
> proper representation for safe pointers ?


I am not so sure what you mean by safe. In protected mode 80286,
pointers are segment selector and offset, which is pretty safe. (If
you set the segment bounds appropriately. I used to use this for
debugging C programs that went outside arrays.)


The 80286 also has a complicated method for passing addresses during
system calls, that provides appropriate protection. (Though I never
used this one.)


There were some older machines, Burroughs sounds familiar, but I am
not so sure now, that used tagged storage. Each storage location
remembered what kind of data it contained, such as integer, floating
point, or pointer.


At about that time, there were machines that had no memory protection
but depended on the compiler to not generate any instructions that
would allow a program to escape its region.


> Some Mainframes like the 390 have historically supported
> safe pointers, I remember.


> [I looked at my S/390 Principles of Operation, and I see a bunch of stuff
> for tracing, but nothing that looks like safe pointers. I'd think it was
> hardware dependent, e.g., if a machine has a fairly clean and efficient
> trap for an unmapped zero address, you'd use that, but if it doesn't, you'd
> do something else. -John]


Yes, I am not sure what he is referring to. There is PC, which I have
never used. There is also the access register facility, which is more
for avoiding address space limitations than protection, but might also
be used for protection.


S/360 uses four bit storage keys on each 2K block for protection.
That still exists for S/370, but is usually used along with the
segment and page tables to provide protection. (The latter is the way
that many currently popular virtual addressed systems handle
protection.)


Most such systems protect programs from each other (and malicious
users that might be running them).


-- glen


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.