pointer comparisons on PC (thanks, and a followup question).

Frank Whaley few at quad1.quad.com
Wed Dec 13 07:51:33 AEST 1989


In article <2583A4BE.697A at marob.masa.com> daveh at marob.masa.com (Dave Hammond) writes:
>Thanks to all who responded to my inquiry about pointer comparison on
>the PC.  Perhaps you'll indulge me a bit longer.  The program is being
>compiled in the Large model, but the normalization process does not
>appear to occur with automatic storage, only external.  Am I correct in
>assuming that stack variables are always treated as Small model, since
>the stack must fit in a 64k segment ?

Before this gets out of hand let me point out that I got a note from Dave
with a sample program that displays his problem.  He, like many of us,
missed the fact that TC follows the tradition of previous compilers in
providing a default 4K stack for the large data models.  His sample program
allocated just over 4K of automatic variables and thus was able to
easily demonstrate segment wrap when printing only the offset portion of a
far pointer.

Since the stack is allocated by the run-time (and may be of any size up
to 64K), the compiler cannot know when you are allocating more stack
space than will exist later.  I forgot to tell Dave that if he had turned
stack checking on (with the -N flag), his sample program would have
immediately produced a stack overflow error and exited.

>Finally, does anyone have suggestions on C compilers for the PC which
>are better suited for development than Turbo-C ? Are there compilers
>which will do pointer normalization all the time (and allow me to port
>software to DOS without having to scan thousands of lines to determine
>where "huge" has to be inserted :-<)

All of the PC C compilers I use produce remarkably similar results when
presented with violations of segmented architecture silliness.
-- 
Frank Whaley
Senior Development Engineer
Quadratron Systems Incorporated
few at quad1.quad.com
uunet!ccicpg!quad1!few

Water separates the people of the world;
Wine unites them.



More information about the Comp.lang.c mailing list