Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!yale!cmcl2!lanl!jlg From: jlg@lanl.gov (Jim Giles) Newsgroups: comp.arch Subject: Re: Compiler Costs Message-ID: <56190@lanl.gov> Date: 6 Jul 90 20:17:49 GMT References: <373@e2big.mko.dec.com> Organization: Los Alamos Natl Lab, Los Alamos, N.M. Lines: 26 From article <373@e2big.mko.dec.com>, by gillett@ceomax..dec.com (Christopher Gillett): > [...] > 3. How talented are you? The art of assembly language programming > is rapidly dying out. Many people are really gifted high level > programmers who fall apart in the assembly world (absolutely no > jabs at anybody at all intended here, btw :-) ). [...] This is an interesting point which is more complex that it appears. I can do assembly code reasonably well on most RISC-ish type machines (which include Crays - only one addressing mode, simple instructions, etc.). I can't do well at all with CISC machines (I can't see the point in taking the trouble to learn all those mode and such). So, part of your point three is really a reference to personality. However, you left out target machine as one of your points. The type of hardware you are targeted for can have a very strong impact on how weel you can do vs. a compiler. On a simple scalar machine, you might not do as well as the compiler since implementors have long since found ways of generating good code for such machines (besides, there really isn't much you can do - the scalar non-pipelined code has only one "degreee of freedom" and that is instruction selection - ordering and register allocation are usually obvious). On a vector or parallel machine, one loop that _you_ vectorize but the compiler didn't can gain a _lot_! J. Giles