[HN Gopher] Comparing 6502 Multiply Routines ___________________________________________________________________ Comparing 6502 Multiply Routines Author : adunk Score : 35 points Date : 2023-12-11 09:19 UTC (13 hours ago) (HTM) web link (github.com) (TXT) w3m dump (github.com) | JonChesterfield wrote: | Exactly what the title sounds like. At least one person has gone | very far down this rabbit hole, possibly two people. A joy to | read through, thank you for posting. | | This is the sort of comparison that would be great to do for a | compiler runtime implementation. Integer division comes to mind. | Hard to justify the time. | Someone wrote: | > Integer division comes to mind. | | In case you don't know about it: https://libdivide.com/ | | Does what you ask for, but for 8-bit CPUs like the 6502, you | probably would want to do additional work (I would at least | read the output of the C compiler to see whether there's an | 'easily' cuttable corner left) | duskwuff wrote: | > In case you don't know about it: https://libdivide.com/ | | The division routines generated by libdivide assume that fast | integer multiplication is available. If it isn't, you may be | better off with other approaches. | saulpw wrote: | I don't miss those early days of programming. It's fun to | optimize and it's amazing what you can do with minimal resources, | but it took an incredible amount of effort to get a 70s-era | computer to do elementary school arithmetic fast enough to be | useful. People spent their lives working on analyses like this, | only to find in a scant few years that the next chip has it | built-in as a single instruction. | jandrese wrote: | To be fair, those chips made multiply a single instruction, but | they would take tens or hundreds of clock cycles to complete. | What it really saved you was precious working memory, no longer | needing to consume a significant chunk of memory with a lookup | table in order to multiply at a decent speed. If your platform | has 16kb of working memory then a 2k lookup table is a huge | ask. Even a small 512k lookup table is serious chunk of your | memory budget, you have to really consider if wasting hundreds | of clock cycles per multiply is a better option. | wvenable wrote: | I love these early days of programming as I do it as hobby. | What's pretty amazing is how much you can do without any | multiplication or division at all. With add, substract, and | shifts you can do a surprising amount on a computer. | tonyedgecombe wrote: | [delayed] | jandrese wrote: | The graphical error plots for the versions that approximate are a | joy to behold. You can clearly see the ringing and how the error | bars tend to grow larger with bigger inputs. | sunpazed wrote: | I'm writing a pinball game in assembly for the original Gameboy, | and recently had to hand-craft multiply, division and cosine | routines to trade off accuracy for spare cycles. Something like | this would have come in handy!! ___________________________________________________________________ (page generated 2023-12-11 23:00 UTC)