Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 9/5/84; site bunker.UUCP Path: utzoo!watmath!clyde!burl!ulysses!allegra!mit-eddie!godot!harvard!talcott!panda!genrad!decvax!ittvax!bunker!garys From: garys@bunker.UUCP (Gary M. Samuelson) Newsgroups: net.unix-wizards,net.legal Subject: Re: Re: yacc: public domain? Message-ID: <696@bunker.UUCP> Date: Wed, 30-Jan-85 09:48:04 EST Article-I.D.: bunker.696 Posted: Wed Jan 30 09:48:04 1985 Date-Received: Sat, 2-Feb-85 09:04:04 EST References: <315@desint.UUCP> <45@mit-athena.ARPA> <305@terak.UUCP> Organization: Bunker Ramo, Trumbull Ct Lines: 44 Xref: watmath net.unix-wizards:11810 net.legal:1371 > > How do I > > know that the output of the C compiler isn't the legal property of > > the compiler's author? > > In the case if C (and most other high-level languages), the output > of the compiler isn't usually considered to be property of the > compiler company. After all, they would be hard-pressed to show > that your object code duplicates, or is a translation of, their > compiler. On the contrary, you can show relatively easily that > it is a translation of YOUR source program. > > BUT!!!! High-level languages almost always have an object-time > library associated with them, and direct copies of subroutines > from this library ARE linked in to your object deck. Almost all > compilers come with a prohibition against commercial sales of > programs which were linked with their object libraries! Let me see if I understand this: If a source statement which I write is turned into several lines of machine code, which is inserted in line, then the machine code is mine, but if my source statement is turned into one or more lines of machine code which call a subroutine, then I can have the call, but not the called routine. What's the difference between a library routine, which becomes part of my object module in response to my source code, and an inline routine which becomes part of my object module in the same way? The source for both routines was written by the compiler vendor; why do I own the object for one but not the other? (Note that I said object; if the vendor claims right to the source of the library, that's fine.) In fact, I don't even know when I'm calling a library routine and when I'm not. If the target machine doesn't have instructions for 32 bit integer arithmetic (e.g., the Z80 and the M68000), then the binary operators '*' and '/' produce calls to library routines. Sounds like the story I heard about a man who was willing to let his neighbor use his lawn mower, only on condition that the neighbor couldn't remove it from the premises. Gary Samuelson ittvax!bunker!garys