Path: csiph.com!aioe.org!.POSTED!not-for-mail From: =?UTF-8?Q?Arne_Vajh=c3=b8j?= Newsgroups: comp.lang.java.programmer Subject: Re: Forward references Date: Sun, 2 Oct 2016 19:54:54 -0400 Organization: Aioe.org NNTP Server Lines: 32 Message-ID: References: NNTP-Posting-Host: PBuS014lhzVyHjLbXmo/ZQ.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.3.0 X-Notice: Filtered by postfilter v. 0.8.2 Xref: csiph.com comp.lang.java.programmer:35693 On 10/2/2016 5:44 PM, Jerry Stuckle wrote: > On 10/2/2016 1:11 PM, Martin Gregorie wrote: >> On Sun, 02 Oct 2016 15:45:19 +0000, Stefan Ram wrote: >>> An old C compiler from the 70s is a one-pass compiler IIRC, >>> so it does not do "forward references". >>> >> Whose C was that? >> >> Not K&R for sure: they've always had separate preprocessor, C->Assembler >> translation, assembler and linker phases. Thats a given, since from the >> outset they were designed to use the native assembler and linker >> of the target machine, since that's an easy way to make porting easier. > > Stefan is correct. The preprocessor is not a compiler; neither is the > linker. True. > And there was not a c->Assembler and assembler - every C > compiler I know of (at least since the mid 80's) generated machine code > directly, although most did have the option to output the assembler > code, also. There was not a separate assembler step. GCC It has 'gcc' call 'cc1' to generate '.s' and call 'as' to assemble to '.o'. But the assembler is not a compiler pass either. Arne