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

*LDB, *DPB



    From: JONL at MIT-MC (Jon L White)
	Date: 18 September 1980 04:06-EDT
	BTW I notice that the functions *ldb and *dpb take the byte
	specifcation shifted left by 30 (octal).  This causes (ldb x y)
	to expand into (*ldb (lsh x 30) y).  This seems pretty gratuitous
	to me since it only takes one instruction to have *ldb and *dpb
	do the lsh themselves.  (*ldb contains an unnecessary move anyway!)
    *LDB and *DPB take a pre-shifted argument so that when, for example,
    "x" is a constant, the call becomes  (*ldb <x>_30 y), and the executable
    sequence then doesn't include the LSH;  this in fact is the case worth
    optimizing.
Well, actually I don't see why this matters.  In the interpreter you
don't care, and the compiler is perfectly capable of figuring out
that there is a constant there and pre-shifting it--indeed, it can
optimize even better.  I don't know exactly what code is produced
for *LDB, but for (*LDB 0304 X) one might imagine the code
	(LDB TT (% 0 0 @ (SPECIAL X) 030400))
being generated.  No shifts, and indeed 0304_30 doesn't exactly appear
either.