Sigbjorn Finne <[EMAIL PROTECTED]> wrote:
> 
> "Julian Seward (Intl Vendor)" <[EMAIL PROTECTED]> writes:
> > 
> > | > char fooble ( ... )
> > | > {
> > | >    return 'z';
> > | > }
> > | > 
> > | > on an x86, 'z' will be returned at the lowest 8 bits in %eax. What I
> > | > don't know is, is the C compiler obliged to clear the upper 24 bits of
> > | > %eax, or does that onus fall on the callee?

The upper 24 bits of eax must be cleared in the callee.
The caller can assume that they are zero.

I don't know if this is documented anywhere, but that is the convention
which GNU C follows (on all architectures -- the C front-end internally
promotes the return type from "char" to "int").  I can point you to
the exact line of code in the GNU C front-end if you really want.

I think this is required by traditional K&R C code, which does things
like calling such functions without declaring them.

-- 
Fergus Henderson <[EMAIL PROTECTED]>  |  "I have always known that the pursuit
The University of Melbourne         |  of excellence is a lethal habit"
WWW: <http://www.cs.mu.oz.au/~fjh>  |     -- the last words of T. S. Garp.

_______________________________________________
Glasgow-haskell-users mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to