[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: in defense of C



In article <542@fsu.scri.fsu.edu> pepke@gw.scri.fsu.edu (Eric Pepke) writes:
>In article <1942@skye.ed.ac.uk> jeff@aiai.ed.ac.uk (Jeff Dalton) writes:
>> You say this as if it were typical of better compilers on machines
>> other than SPARCs, such as, maybe, 68020s.  Can they really have safe
>> CARs and CDRs, without loss of speed, on a 68020?
>
>I don't know about the internals of any LISP system other than the ones I 
>have written.  In the one I am now writing for the 680x0, one can have 
>safe CARs and CDRs without loss of speed.  One has to test to see if it is 
>(1) a valid list, or (2) NIL, anyway.  So, one just makes that a test for 
>(1) a valid list, or (2) anything else.  In my system, that's testing a 
>single bit.  In case 1, do the job.  In case 2, return NIL.
>

That's the loss of speed that Jeff is talking about. If you assume
that the argument to CAR or CDR is a cons cell or NIL and you have a
low-tags type scheme, then those operations are 1 instruction long on
a 680x0 (or even less: a base-displacement addressing mode). The NIL
case can be handled with a bit of symbol table trickery. A "safe"
C{A,D}R that checks its argument is going to be slower.

>Eric Pepke                                    INTERNET: pepke@gw.scri.fsu.edu
>Supercomputer Computations Research Institute MFENET:   pepke@fsu
>Florida State University                      SPAN:     scri::pepke
>Tallahassee, FL 32306-4052                    BITNET:   pepke@fsu
>


Tim Moore                     moore@cs.utah.edu {bellcore,hplabs}!utah-cs!moore
"Ah, youth. Ah, statute of limitations."
		-John Waters