From: Guenther T. <gue...@gm...> - 2008-12-09 21:03:29
|
On Tue, 2008-12-09 at 20:39 +0000, Christophe Rhodes wrote: > Guenther Thomsen <gue...@gm...> writes: > > > Am I wrong to expect an "ADD" in the disassembled code below? > > --8<-- > > CL-USER> (defun h (x) > > (declare (type fixnum x) (optimize (safety 0))) > > (the fixnum (+ x 3))) > > > > STYLE-WARNING: redefining H in DEFUN > > H > > CL-USER> (disassemble 'h) > > ; 02C3D4D2: 488D5118 LEA RDX, [RCX+24] ; no-arg-parsing entry point > > Yes. On x86oids, fixnum adds of constants can be implemented using > the Load Effective Address instruction. (I haven't measured recently > to find whether or not this is faster than using ADD, but it has been > at least at some points in the past. > > Best, > > Christophe Ah, I see. With a variant of that function (adding 5 instead of 3, the LEA instruction becomes "LEA RDX, [RCX+40]", the 3 bit left shift is due to implied type information, I suppose). Thanks Guenther |