Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.compilers > #1086 > unrolled thread
| Started by | seimarao@gmail.com |
|---|---|
| First post | 2014-02-10 09:11 -0800 |
| Last post | 2014-02-10 23:03 -0700 |
| Articles | 5 — 5 participants |
Back to article view | Back to comp.compilers
Safe Pointers at the Intermediate Language or Hardware Level seimarao@gmail.com - 2014-02-10 09:11 -0800
Re: Safe Pointers at the Intermediate Language or Hardware Level flaps@dgp.toronto.edu (Alan J Rosenthal) - 2014-02-11 00:58 +0000
Re: Safe Pointers at the Intermediate Language or Hardware Level glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-02-11 01:03 +0000
Re: Safe Pointers at the Intermediate Language or Hardware Level Ivan Godard <ivan@ootbcomp.com> - 2014-02-10 20:45 -0800
Re: Safe Pointers at the Intermediate Language or Hardware Level wclodius@earthlink.net (William Clodius) - 2014-02-10 23:03 -0700
| From | seimarao@gmail.com |
|---|---|
| Date | 2014-02-10 09:11 -0800 |
| Subject | Safe Pointers at the Intermediate Language or Hardware Level |
| Message-ID | <14-02-007@comp.compilers> |
Hi,
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 ?
Some Mainframes like the 390 have historically supported safe pointers,
I remember.
Sincerely,
Seima Rao.
[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]
[toc] | [next] | [standalone]
| From | flaps@dgp.toronto.edu (Alan J Rosenthal) |
|---|---|
| Date | 2014-02-11 00:58 +0000 |
| Message-ID | <14-02-008@comp.compilers> |
| In reply to | #1086 |
I liked the "Saber C" C interpreter a few decades ago. It had what I think you are calling "safe pointers". They had a paper at Usenix in I think the very-late 1980s, but in a nutshell, every pointer value contained three addresses: the actual address value, the lowest you were allowed to go with that pointer value, and the highest you were allowed to go. [Worked great, but it was an interpreter. -John]
[toc] | [prev] | [next] | [standalone]
| From | glen herrmannsfeldt <gah@ugcs.caltech.edu> |
|---|---|
| Date | 2014-02-11 01:03 +0000 |
| Message-ID | <14-02-009@comp.compilers> |
| In reply to | #1086 |
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
[toc] | [prev] | [next] | [standalone]
| From | Ivan Godard <ivan@ootbcomp.com> |
|---|---|
| Date | 2014-02-10 20:45 -0800 |
| Message-ID | <14-02-010@comp.compilers> |
| In reply to | #1086 |
On 2/10/2014 9:11 AM, seimarao@gmail.com wrote: > Hi, > > 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 ? > > Some Mainframes like the 390 have historically supported safe pointers, > I remember. > > Sincerely, > Seima Rao. > [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] > I'm an architect on the team doing the Mill CPU architecture (ootbcomp.com/docs). We would love to do a full-blown capability system, but regretfully have decided that's not viable as a commercial product. A safe pointer (cap) is more than 64 bits, and people would refuse to repeat the pain of the 32- to 64-bit migration. And most programs violate safety (and language standards, but that's another issue), and it's hard to make a sale when the customers keep saying "It worked on Intel!". Sad.
[toc] | [prev] | [next] | [standalone]
| From | wclodius@earthlink.net (William Clodius) |
|---|---|
| Date | 2014-02-10 23:03 -0700 |
| Message-ID | <14-02-011@comp.compilers> |
| In reply to | #1086 |
<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 ? > > Some Mainframes like the 390 have historically supported safe pointers, > I remember. > > Sincerely, > Seima Rao. > [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] To me it sounds like they are interested either in capabaility architectures <http://en.wikipedia.org/wiki/Capability-based_security> or something similar to dope vectors http://en.wikipedia.org/wiki/Dope_vector for something like Algol 60/68, APL, Matlab, or Fortran 90+. Dope vectors can in principle be used for scalars as well as arrays, as a software substitute for a capability architecture, but most users would dislike the overhead.
[toc] | [prev] | [standalone]
Back to top | Article view | comp.compilers
csiph-web