Path: utzoo!attcan!uunet!lll-winken!lll-tis!ames!mailrus!utah-gr!uplherc!esunix!bpendlet From: bpendlet@esunix.UUCP (Bob Pendleton) Newsgroups: comp.arch Subject: Re: Software Distribution Message-ID: <970@esunix.UUCP> Date: 15 Sep 88 15:01:45 GMT References: <1988Sep7.210317.5781@utzoo.uucp> Organization: Evans & Sutherland, Salt Lake City, Utah Lines: 48 From article <1988Sep7.210317.5781@utzoo.uucp>, by henry@utzoo.uucp (Henry Spencer): > In article <963@esunix.UUCP> bpendlet@esunix.UUCP (Bob Pendleton) writes: > > Distribution with sources is Good. Distribution without sources is Evil. Oh, great... GOOD versus EVIL! Send me your definition of good and evil and how you feel about absolute moral values and I'll send you mine. Then we can debate the whole issue. But PLEASE do it off line. I've found that very few people are much interested in these kinds of debates. >>68020. But, you can make it run without error if those contraints are >>available to the target machine code generator... > > You miss my point. 36-bit ints can be dealt with in the software fairly > well. What I'm thinking of is much more subtle things that the compiler > can't easily discover and put in the intermediate form, e.g. "this program > depends on being able to dereference NULL pointers". Or, for that matter, > "the details of the arithmetic in this program assume that integers are > at least 36 bits". This is the sort of thing that will not be known to > the compiler unless the programmer is explicit about it -- and lack of > programmer attention to such details is exactly the problem. I've addressed this problem in another posting, but what the hey, I'll do it again. To be truely portable the intermediate form MUST address the issues you mention. Even if the source language doesn't define the semantics of dereferencing NULL pointers, the intermediate form must define the semantics of dereferencing NULL pointers. Otherwise, just as C code that counts on being able to dereference NULL pointers is not fully portable, an intermediate form that doesn't define the semantics of dereferencing NULL pointers will not be fully portable. No matter what the source language, a compiler that generates a portable intermediate form will have to explicitly state the assumptions it is making about things like word size, arithmetic, and the semantics of dereferencing NULL pointers, or conform to the semantics defined for these things in the portable intermediate form. Otherwise it just won't work. Yes, that means that C compilers will have to put information into the intermediate form that does not derive from any programmer provided declarations. That indicates a flaw in C, not a problem with the idea of a portable intermediate language. Bob P.-- Bob Pendleton @ Evans & Sutherland UUCP Address: {decvax,ucbvax,allegra}!decwrl!esunix!bpendlet Alternate: utah-cs!esunix!bpendlet I am solely responsible for what I say.