Xref: utzoo comp.lang.c:21110 comp.lang.misc:3388 Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!cwjcc!tut.cis.ohio-state.edu!att!cbnewsc!nevin1 From: nevin1@cbnewsc.ATT.COM (nevin.j.liber) Newsgroups: comp.lang.c,comp.lang.misc Subject: C is NOT a portable assembler (was: want to know) Message-ID: <2659@cbnewsc.ATT.COM> Date: 24 Aug 89 00:43:58 GMT References: <1496@l.cc.purdue.edu> Reply-To: nevin1@ihlpb.ATT.COM (nevin.j.liber,55528,ih,4f410,312 979 4751) Followup-To: comp.lang.c Organization: AT&T Bell Laboratories Lines: 34 In article <1496@l.cc.purdue.edu> cik@l.cc.purdue.edu (Herman Rubin) writes: >No, the question is not a JOKE. It is a stupidity in UNIX which causes the >problem. I have used other systems in which the main program could have >any name whatever, and even in which the entry need not be to a main program, >while a main program is present. I have even used it. It has finally dawned on me on what Herman Rubin thinks C is. Now I know why stuff like entry points and hardware registers and NAND gates bother him. He must have heard the phrase "C is kind of a portable assembler". This phrase is a misnomer! C is closer to (and I really hate to call it this because I KNOW that someone is going to misinterpret me) a portable assembly language than a portable assembler. C defines a virtual machine which maps fairly efficiently onto a wide variety of current computer architectures. What this allows one to do is write code which will work unaltered on a lot of different machines. This is why the implementations of other languages (such as C++, Eiffel(?), etc.) compile (and I mean compile, not translate. Compilers output syntactically correct code, be it assembler, p-code, or C; translators may rely on the post-processor to catch the syntactical errors) to C; it is portable. Now let's look at what Herman wants. He wants to be able to hand-optimize his code; to know which variables go into which registers, what branch instructions are used, etc. In other words, he wants an extra-fancy macro assembler! C is not this, and it will never be this! He complains that he can't do everything in C that he can in assembler. Of course not! C was never intended to replace an assembler (except perhaps on a PDP-11 :-))! Please stop complaining that C doesn't fit your want of a super-duper macro assembler; C isn't one, it is a *language*. -- NEVIN ":-)" LIBER AT&T Bell Laboratories nevin1@ihlpb.ATT.COM (312) 979-4751