public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "matz at gcc dot gnu dot org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug c++/45265] GCC has an intermittent bug when computing the address of function parameters
Date: Fri, 13 Aug 2010 15:18:00 -0000	[thread overview]
Message-ID: <20100813151822.29488.qmail@sourceware.org> (raw)
In-Reply-To: <bug-45265-19547@http.gcc.gnu.org/bugzilla/>



------- Comment #41 from matz at gcc dot gnu dot org  2010-08-13 15:18 -------
You should really adjust your glasses if you want to continue trolling with
the high standards we're used to meanwhile:

> > What in the words "real segmentation like on 286, where there's no linear
> > relationship between effective address and segment+offset"

So, I think it's pretty clear that I'm referring to the 80286, whereas
you cite something ...

> From wikipedia:
> 
> "Rather than concatenating the segment register with the address
> register, as in most processors whose address space exceeded their
> register size, the 8086 shifted the 16-bit segment only 4 bits left

... about the 8086.  To make it very obvious, even to you: 86 vs 286.

As you have so huge experiences with such old processors, I'm sure
you can guess what I meant with "real segmentation" aka protected mode now. 
In case you still can't and because we seem to start using wikipedia to back
up claims: http://en.wikipedia.org/wiki/X86_memory_segmentation .

Now, implement a routine that subtracts two pointer for this memory model.
You'll see that it requires bit-magic on the segment selector,
lookup in the GDT or LDT and finally some 24bit arithmetic to produce
the result.  The arithmetic is of course trivial, the lookup is expensive.
Doing it for every pointer subtract was what I called prohibitive expensive
for a normal pointer subtraction.

That, together with the fact that all
segments are max 2^16 in size, and that it's impossible to map back all
24bit numbers into segmented addresses without generally adding new
entries into the GDT/LDT made it useless to have pointer differences
any larger than 16 bit, not impossible but useless in real compilers.
Therefore the result of such a subtraction isn't always representable.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45265


  parent reply	other threads:[~2010-08-13 15:18 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-12 14:50 [Bug c++/45265] New: " rogerio at rilhas dot com
2010-08-12 14:52 ` [Bug c++/45265] " rogerio at rilhas dot com
2010-08-12 14:52 ` rogerio at rilhas dot com
2010-08-12 14:54 ` rogerio at rilhas dot com
2010-08-12 15:09 ` jakub at gcc dot gnu dot org
2010-08-12 15:25 ` schwab at linux-m68k dot org
2010-08-12 15:33 ` rogerio at rilhas dot com
2010-08-12 15:34 ` rogerio at rilhas dot com
2010-08-12 15:52 ` redi at gcc dot gnu dot org
2010-08-12 15:52 ` schwab at linux-m68k dot org
2010-08-12 16:00 ` matz at gcc dot gnu dot org
2010-08-12 16:05 ` rogerio at rilhas dot com
2010-08-12 16:09 ` redi at gcc dot gnu dot org
2010-08-12 16:10 ` pinskia at gcc dot gnu dot org
2010-08-12 16:11 ` jakub at gcc dot gnu dot org
2010-08-12 16:15 ` rogerio at rilhas dot com
2010-08-12 16:17 ` redi at gcc dot gnu dot org
2010-08-12 16:18 ` rogerio at rilhas dot com
2010-08-12 16:19 ` rogerio at rilhas dot com
2010-08-12 16:20 ` redi at gcc dot gnu dot org
2010-08-12 16:58 ` dj at redhat dot com
2010-08-12 17:09 ` froydnj at gcc dot gnu dot org
2010-08-12 17:25 ` rogerio at rilhas dot com
2010-08-12 17:25 ` rogerio at rilhas dot com
2010-08-12 17:50 ` rogerio at rilhas dot com
2010-08-12 17:54 ` redi at gcc dot gnu dot org
2010-08-12 18:04 ` rogerio at rilhas dot com
2010-08-12 18:05 ` matz at gcc dot gnu dot org
2010-08-12 18:08 ` dj at redhat dot com
2010-08-12 18:24 ` rogerio at rilhas dot com
2010-08-12 18:28 ` pinskia at gcc dot gnu dot org
2010-08-12 18:32 ` rogerio at rilhas dot com
2010-08-12 18:39 ` rogerio at rilhas dot com
2010-08-12 18:56 ` matz at gcc dot gnu dot org
2010-08-13 12:14 ` rogerio at rilhas dot com
2010-08-13 13:00 ` matz at gcc dot gnu dot org
2010-08-13 13:14 ` matz at gcc dot gnu dot org
2010-08-13 13:32 ` paolo dot carlini at oracle dot com
2010-08-13 14:47 ` rogerio at rilhas dot com
2010-08-13 14:48 ` rogerio at rilhas dot com
2010-08-13 14:53 ` rogerio at rilhas dot com
2010-08-13 15:18 ` matz at gcc dot gnu dot org [this message]
2010-08-13 15:26 ` matz at gcc dot gnu dot org
2010-08-13 16:28 ` rogerio at rilhas dot com
2010-08-13 16:30 ` rogerio at rilhas dot com
2010-08-13 16:33 ` redi at gcc dot gnu dot org
2010-08-13 16:42 ` rogerio at rilhas dot com
2010-08-13 18:00 ` ubizjak at gmail dot com
2010-08-13 21:16 ` rogerio at rilhas dot com
2010-08-13 22:38 ` redi at gcc dot gnu dot org
2010-08-13 22:40 ` redi at gcc dot gnu dot org
2010-08-14  1:26 ` matz at gcc dot gnu dot org
2010-08-14 13:18 ` rogerio at rilhas dot com
2010-08-14 13:55 ` redi at gcc dot gnu dot org
2010-08-14 14:25 ` redi at gcc dot gnu dot org
2010-08-14 14:32 ` rogerio at rilhas dot com
2010-08-14 14:34 ` rogerio at rilhas dot com
2010-08-14 15:09 ` redi at gcc dot gnu dot org
2010-08-14 16:02 ` rogerio at rilhas dot com
2010-08-14 17:11 ` redi at gcc dot gnu dot org

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100813151822.29488.qmail@sourceware.org \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).