[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 6502 illegal opcodes questions



222222In article <e598gn$134q$1@merope.saaf.se>,
 pausch@saaf.se (Paul Schlyter) wrote:

> In article 
> <nospam-467DFC.23375126052006@network-065-024-007-027.columbus.rr.com>,
> 
> > In article <e56rj1$7lo$1@merope.saaf.se>,
> >  pausch@saaf.se (Paul Schlyter) wrote:
> > 
> >> In article <1148544621.115246.248890@y43g2000cwc.googlegroups.com>,
> >> mdj <mdj.mdj@gmail.com> wrote:
> > [...]
> >>> The key concepts that are missing here are pointers, and more 
> >>> specifically,
> >>> the ability to perform arbitrary arithmetic on pointer types.
> >> 
> >> FORTRAN, Pascal and Ada lacks this too.
> > [...]
> > 
> > This is certainly false for Ada:
> > 
> > http://www.adapower.com/rm95.php
> > 
> > In particular, the standard package Interfaces.C.Pointers overloads the 
> > "+" and "-" operators for just this purpose.
> > 
> > http://www.adapower.com/rm95/RM-B-3-2.html
> 
> OK, Ada has pointer arithmetic - but is it arbitrary?

Well, it's arbitrary up to the limit of erroneous: you can't access 
memory that's forbidden by the OS:-)

> Doesn't Ada impose strict range checking for all its data structures, 
> throwing exceptions as soon as an attempt of out-of-range access is 
> performed?

Certainly, constraint, overflow and elaboration checks can be turned on 
and off selectively as requirements dictate.

> I though the fundamental idea behind Ada was to provide 
> provably secure software, and then one cannot take pointer arithmetic 
> as lightly as C and C++ both do.

Indeed, the capability is provided more to interface with existing code 
than to represent exemplary style. In the normal course of programming, 
one uses the operations and attributes of the referenced type (e.g. 
array and records) rather than pointer arithmetic. In fact, Ada does 
away with the syntactic distinction between the pointer and the thing 
pointed to (e.g. p and p^, in Pascal). Java takes this even further, 
allowing no access whatever to the underlying object reference as a 
pointer.

> > It is arguably false for many widely used flavors of Pascal including 
> > Object Pascal and Turbo Pascal.
> > 
> > Even Fortran has a non-standard extension for this:
> > 
> > http://gcc.gnu.org/onlinedocs/gfortran/Cray-pointers.html
> 
> If we are going to include non-standard extensions of languages too,
> then the Java camp should also include both J++ and C# .....

Touch�! :-)

-- 
John Matthews
jmatthews at wright dot edu
www dot wright dot edu/~john.matthews/