From: Ian Wild <ian@cfmu.eurocontrol.be>
Subject: Re: Ada's Slide To Oblivion ...
Date: Fri, 08 Feb 2002 10:36:51 GMT
Date: 2002-02-08T10:36:51+00:00 [thread overview]
Message-ID: <3C63AB8A.F52337D8@cfmu.eurocontrol.be> (raw)
In-Reply-To: %rC88.3860$oC3.2148048@typhoon.san.rr.com
David Brown wrote:
>
> Hyman Rosen <hyrosen@mail.com> wrote:
> > Ray Blaak wrote:
> >> You most certainly can:
> >> typedef void (*FUNC)();
> >> int i = 0;
> >> FUNC f = (FUNC) &i;
> >>
> >> That this crashes with access violations on a sane OS is a good thing, but
> >> nothing in the language is preventing the code/data conversions.
> >
> > False. The typecast '(FUNC)&i' is not legal standard C or C++.
> > It's not even a case of undefined results - it's just illegal.
> > Some compilers permit it as an extension, though.
>
> Legality aside, I have yet to find a compiler that doesn't accept this.
I'll agree that most compilers will accept it, but it's not
C and quite often doesn't do what you're expecting.
> In fact, I have code that does this very thing, it creates a small
> amount of data that happens to be instructions, casts it to a function
> pointer and calls it.
On, say, a high end PDP-11, or a 68000, or an 8086 (but not its
progeny!), code space and data space are physically separate. There
are wires that come out of the processor to say which space to use. On
such a system there's NO WAY to write to code space, and it's not
impossible that
static int x [500];
int main () {
if ((void*)&main == (void*)&x)
printf ("Yes\n");
return 0;
}
will print "Yes". You can fill your array x with
all manner of carefully chosen data, but any attempt
to call it will jump to the corresponding address
in /code space/, which here will re-start the program.
next prev parent reply other threads:[~2002-02-08 10:36 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-01-30 23:09 Ada's Slide To Oblivion Volkert
2002-01-30 23:57 ` Marin David Condic
2002-01-31 3:04 ` Richard Riehle
2002-01-31 3:05 ` Eric Merritt
2002-01-31 16:26 ` Richard Riehle
2002-01-31 16:41 ` Larry Kilgallen
2002-02-02 15:51 ` Zach Swanson
2002-02-02 19:18 ` Richard Riehle
2002-02-04 4:43 ` Richard Riehle
2002-01-31 14:37 ` Marin David Condic
2002-01-31 15:14 ` Ted Dennison
2002-01-31 17:16 ` Marin David Condic
2002-01-31 18:32 ` Steve O'Neill
2002-01-31 18:27 ` Warren W. Gay VE3WWG
2002-01-31 19:22 ` Marin David Condic
2002-01-31 20:40 ` Christopher A. Bohn
2002-01-31 21:08 ` Marin David Condic
2002-02-01 14:22 ` [off-topic - to lighten the air] Wes Groleau
2002-02-01 2:31 ` Ada's Slide To Oblivion Richard Riehle
2002-02-04 16:51 ` Jerry Petrey
2002-02-04 17:49 ` Richard Riehle
2002-02-04 18:24 ` Marin David Condic
2002-02-05 9:04 ` DPH
2002-02-05 14:46 ` Marin David Condic
2002-02-05 16:37 ` Wes Groleau
2002-02-05 17:22 ` Marin David Condic
2002-02-05 18:42 ` Preben Randhol
2002-02-06 21:37 ` Warren W. Gay VE3WWG
2002-02-07 11:30 ` Georg Bauhaus
2002-02-05 13:48 ` Georg Bauhaus
2002-02-06 7:07 ` Anders Wirzenius
2002-02-01 2:26 ` Richard Riehle
2002-02-01 14:27 ` A. Nonny Mouse
2002-02-01 17:18 ` Dale Pontius
2002-02-06 2:37 ` Nick Roberts
2002-02-06 7:31 ` Ole-Hjalmar Kristensen
2002-02-06 21:27 ` Nick Roberts
2002-02-06 22:03 ` Ian S. Nelson
2002-02-07 1:44 ` Philip Cummins
2002-02-07 13:56 ` Ian Wild
2002-02-07 17:25 ` Ray Blaak
2002-02-07 19:20 ` Hyman Rosen
2002-02-07 21:36 ` David Brown
2002-02-08 10:36 ` Ian Wild [this message]
2002-02-08 12:23 ` Ole-Hjalmar Kristensen
2002-02-08 12:51 ` Ian Wild
2002-02-08 14:28 ` Marin David Condic
2002-02-08 15:52 ` Ole-Hjalmar Kristensen
2002-02-08 13:08 ` Nick Roberts
2002-02-08 21:28 ` Matthew Woodcraft
2002-02-08 21:45 ` Nick Roberts
2002-02-08 22:44 ` Darren New
2002-02-09 0:39 ` David Brown
2002-02-18 3:54 ` David Thompson
2002-02-06 14:59 ` Ian S. Nelson
2002-01-31 18:28 ` Warren W. Gay VE3WWG
2002-01-31 2:37 ` Jim Rogers
2002-01-31 15:02 ` Marin David Condic
2002-01-31 18:28 ` Steve O'Neill
2002-01-31 19:41 ` Larry Kilgallen
2002-01-31 19:53 ` martin.m.dowie
2002-01-31 20:06 ` Marin David Condic
2002-01-31 21:06 ` Steve O'Neill
2002-01-31 22:28 ` Marin David Condic
2002-01-31 19:42 ` Marin David Condic
2002-01-31 18:41 ` Warren W. Gay VE3WWG
2002-01-31 19:52 ` Marin David Condic
2002-02-01 18:31 ` Warren W. Gay VE3WWG
2002-02-01 12:28 ` David Gillon
2002-02-01 21:02 ` Marin David Condic
2002-02-02 4:05 ` Adrian Hoe
2002-02-02 12:51 ` Jeffrey Creem
2002-02-04 15:58 ` Marin David Condic
2002-02-02 4:02 ` Adrian Hoe
2002-02-02 17:35 ` tmoran
2002-02-01 1:42 ` Randy Brukardt
2002-02-01 16:56 ` Nick Roberts
-- strict thread matches above, loose matches on Subject: below --
2002-02-06 7:02 Christoph Grein
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox