From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,da46977c58c329df X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2002-02-07 05:56:16 PST Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!newsfeeds.belnet.be!news.belnet.be!news2.kpn.net!news.kpn.net!nslave.kpnqwest.net!nloc2.kpnqwest.net!nloc.kpnqwest.net!nmaster.kpnqwest.net!nreader2.kpnqwest.net.POSTED!not-for-mail Message-ID: <3C6288CB.3227AF20@cfmu.eurocontrol.be> From: Ian Wild Reply-To: ian.wild@eurocontrol.int Organization: Eurocontrol X-Mailer: Mozilla 4.7 [en] (X11; I; Linux 2.0.30 i686) X-Accept-Language: en MIME-Version: 1.0 Newsgroups: comp.lang.ada Subject: Re: Ada's Slide To Oblivion ... References: <4519e058.0201310714.650888e1@posting.google.com> <3C598CAA.7040801@home.com> <3C59FCD3.928144FB@adaworks.com> <7v8za79id0.fsf@vlinux.voxelvision.no> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cache-Post-Path: ecw.eurocontrol.be!unknown@193.221.189.77 X-Cache: nntpcache 2.3.3 (see http://www.nntpcache.org/) Date: Thu, 07 Feb 2002 13:56:15 GMT NNTP-Posting-Host: 193.221.170.178 X-Complaints-To: abuse@Belgium.EU.net X-Trace: nreader2.kpnqwest.net 1013090175 193.221.170.178 (Thu, 07 Feb 2002 14:56:15 MET) NNTP-Posting-Date: Thu, 07 Feb 2002 14:56:15 MET Xref: archiver1.google.com comp.lang.ada:19702 Date: 2002-02-07T13:56:15+00:00 List-Id: Nick Roberts wrote: > > Allow me to try to clarify. The C language requires (in practice if not > strictly in theory) that all pointers fit into one machine word. On 32-bit > architectures, this almost invariably forces the use of a 'flat' address > space (just an offset, with no segment number or equivalent). C, in practice as well as theory, has two flavours of pointer, and there's no operation that will convert between code pointers and data pointers. You simply *can't* read or write via code space pointers, nor can you call a data pointer. (In fact, it's not unusual for the two ranges of pointers, when viewed as integers, to overlap, since "somewhere near the bottom" is a pretty good place for both to start.) > Which means > that, for many architectures, the operating system cannot use segmentation > (or other memory divisions) to detect a call or jump into read-write memory. There's nothing in C that prevents split I/D spaces being used if they're available, as witnessed by the fact that C (and, indeed, Unix) ran on PDP-11s of yore. Of course, if the processor /can't/ separate instructions from data, it can't do it for *any* language, so it'd be unfair to criticise C alone for this.