Path: csiph.com!weretis.net!feeder6.news.weretis.net!news.misty.com!news.iecc.com!.POSTED.news.iecc.com!nerds-end From: Thomas Koenig Newsgroups: comp.compilers Subject: Re: Looking for a garbage collection paper Date: Thu, 29 Sep 2022 13:15:45 -0400 (EDT) Organization: news.netcologne.de Lines: 45 Sender: news@iecc.com Approved: comp.compilers@iecc.com Message-ID: <22-09-016@comp.compilers> References: <22-09-011@comp.compilers> <22-09-012@comp.compilers> <22-09-013@comp.compilers> <22-09-014@comp.compilers> Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="62738"; mail-complaints-to="abuse@iecc.com" Keywords: GC, history, comment Posted-Date: 29 Sep 2022 13:15:45 EDT X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com Xref: csiph.com comp.compilers:3168 gah4 schrieb: > On Friday, September 23, 2022 at 11:33:30 AM UTC-7, Spiros Bousbouras wrote: > >> > and for the next colour: cur_col = (cur_col + 1) mod 3 >> > >> > Sources available @ > >> If it were nothing more than that , the book would not have called it >> ingenious. Obviously it will have to fit with the rest of the algorithm >> without breaking the invariants which guarantee correctness. It also >> says "a single instruction". I don't think that >> cur_col = (cur_col + 1) mod 3 >> can be implemented in a single instruction in common hardware. > > (snip) > >> [Hm, you're right, x+1 mod 3 is not a likely instruction. -John] > > Maybe not common hardware today, but 50 years ago? > > It would seem more likely on a machine with a word size a > multiple of 3, with 36 bit words not so rare 50 years ago. > > The PDP-10 byte addressing instructions allow bytes > between 1 and 36 bits. I never learned all the tricks with them, > but if you use 12 bit bytes, the bit offset will cycle 0, 12, 24. > > That is, you can sequentially address thirds of > the 36 bit words. > > I did do PDP-10 assembly programming, but not quite enough > to learn all the tricks. > [I did a lot of PDP-8 and PDP-10 programming and I am pretty sure > there was no way to do x+1 mod 3 in a single instruction, not even > with tricky IDIVI with an indexed immediate operand. -John] What about int a[] = {1, 2, 0}; cur_col = a[cur_col]; That would qualify as a single indexed load, provided cur_col started out with a value between 0 and 2. [Duh, of course that will work on any word addressed machine. -John]