6 ms·
80386 Multiplication and Division
- themafia 8mo agoExcellent work. Thank you! Your 486 FPGA project looks pretty neat too.
- userbinator 8mo agoNo discussion of these instructions on the 386 would be complete without mentioning that early revisions had a bug in the 32-bit multiply: https://retrocomputing.stackexchange.com/questions/17803/intel-386-multiply-bug https://retrocomputing.stackexchange.com/questions/17803/int... I wonder if anyone outside of Intel has discovered the actual bug in the circuitry yet.
- st_goliath 8mo agoYes, one can only hope Ken Shirriff eventually happens to come across one of those models, but I guess they are probably very rare these days. Besides the multiplication, the 386 had quite a number of teething problems[1], including occasionally broken addressing modes, unrecoverable exceptions, virtual address resolution bugs around the 2G mark, etc... A while ago, there was also an article posted here that analyzed the inner workings of the Windows/386 loader[2]. Interestingly, Windows simply checks a pair of instruction (XBTS/IBTS) that early 386 steppings had, but was later removed, raising an invalid opcode exception instead. Raymond Chen also wrote a blog post describing a few workarounds that Windows 95 had implemented[3]. [1] https://www.pcjs.org/documents/manuals/intel/80386/ https://www.pcjs.org/documents/manuals/intel/80386/ [2] https://virtuallyfun.com/2025/09/06/unauthorized-windows-386/ https://virtuallyfun.com/2025/09/06/unauthorized-windows-386... [3] https://devblogs.microsoft.com/oldnewthing/20110112-00/?p=11773 https://devblogs.microsoft.com/oldnewthing/20110112-00/?p=11...
- kens 8mo agoFrom what I've read, the 386 multiplication bug was a semi-analog problem, so the fix was probably making a transistor larger. As a result, it would probably be hard to find the fix on the die and wouldn't be as interesting as, say, the Pentium division bug.
- FarmerPotato 8mo agoThis reminds me of a problem from undergrad computer architecture: how can you validate the multiplier without checking all possible N squared inputs? (Which would take forever.) I read later in a TI DRAM report about which bit pairs to exercise, based on proximity in silicon layout, to verify the part. I suppose something like that to stress-test the ALU.
- bsaul 8mo agoIs there a rational explanation on why there seems to be a HN article answering the weirdest questions i had in my mind just a few days ago ? Only yesterday i wondered how did CPU performed division. I didn't ask or type anything about it. It was just in my mind. And now this. Are we part of a collective mind ? Do social networks algorithms shape society that deeply that we all end up having about the same random thoughts ? This is really scary in a way.
- aidos 8mo agoNot sure if it has a name but often there’s a trend of “one thing leads to another” related articles on the HN front page. Yesterday there was something similar that might have planted a seed in your mind like it did for other people. https://news.ycombinator.com/item?id=46735133 https://news.ycombinator.com/item?id=46735133
- nand2mario 8mo agoRight. Or it could be frequency illusion. Once you become aware of something, it appears to be more frequent: https://en.wikipedia.org/wiki/Frequency_illusion https://en.wikipedia.org/wiki/Frequency_illusion
- y42 8mo agoor probably just some kind of preference/selection bias. You own a red Mercedes now and suddenly you see only red Mercedes' on the streets.
- bsaul 8mo agoI definitely noticed this trend of article chaining, bu it must have been something else in this case, because i have absolutely 0 memory of seing that post yesterday. Actually, i think my thought came from an instagram video in my feed of a guy showing human division algorithm using sticks on a whiteboard.
- hahahahhaah 8mo agoThe mind data-mines.
- rep_lodsb 8mo agoThe 80186 and NEC Vxx chips - and of course also the 286 - could already do mul/div in one cycle per bit (+ some overhead for the microcode). What they didn't have was the early-out optimization. The three-operand form of IMUL also already existed on those processors. >This wasn't just an incremental upgrade—it was the foundation that would carry the PC architecture for decades to come. AI?
- csmantle 8mo ago> AI? Probably not; this point is well justified by both theory and practice. Supporting suitably larger operands is indeed what naturally comes following the increase of computation demands. One point I do differ from the author is that register width don't necessarily correlate with the size of address space. Even 8bit machines can address a large space by splitting apart the logical address and using multiple registers. Likewise, having a wide register does not imply the same address width.
- direwolf20 8mo agoThe writing style appears to be AI.
- FarmerPotato 8mo agoI see it all over the article. Occasionally there is a more human voice. (See that single dash? The rare use of "I"?) The overall structure resembles a AI response to "explain this code snippet" prompt.
- jecel 8mo agoThe naming of processor sizes is the subject of debate. I call a "pure 8 bit processor" one that has 8 bits for both data and addresses. Like the Kenbak-1. But these are so rare and educational rather than practical that it is very reasonable to call hybrid 8 bit / 16 bit processors just "8 bit". This use of sloppy terms shouldn't make us forget that they are using an address extension trick, just like all those 16 bit processors that wanted to go beyond 64KB (for byte addressed such as the PDP-11, Z8000 or 8086) or 128KB (for word addressed, like the Xerox Alto's modified Data General Nova model).
- Aardwolf 8mo ago> It would go on to run Windows 3.0, Windows 95, early Linux That feels like a stretch :) Maybe it indeed ran on it, but Pentium was available when Windows 95 was released and it was probably far more likely to be sold along with such new Pentium multimedia machines, than someone getting it for their old 386. But Windows 3.11 was its exact match!
- deaddodo 8mo agoWindows 95 was Microsoft's biggest commercial hit at that point. Selling 40m copies in its first year. There's no doubt that it went in to upgrade plenty of 386s/486s until the owners upgraded their hardware.
- vardump 8mo agoYou needed at least 12 MB RAM to run Windows 95 smoothly. There were plenty of 8 MB systems that really really struggled. Even booting up was a swap fest. I remember immediately upgrading to 12 MB. 8 MB was painful. Not all 386 class systems could be upgraded to 12 MB or more.
- EvanAnderson 8mo agoI did a ton of upgrades from 3.1 to Windows 95 in late 1996 and early 1997 on 386 and 486 machines with 4MB of RAM. I still have a "mark" from the tedium. Some of the machines didn't have a large enough hard drive to store a copy of the setup files (the "CAB files") so until the company issued me a ZIP drive I had to do "the floppy shuffle" with 20-ish disks. It ran like crap with 4MB of RAM but it did run. Opening anything much resulted in paging.
- vardump 8mo agoYour mileage may vary. I remember 4 MB booting, but being absolutely useless. 8 MB was still swapping all the time, you couldn't really run much beyond some simple software. 12 MB was finally enough to do something productive, but definitely nothing luxurious.
- nand2mario 8mo agoAuthor here. Happy to discuss the technical details. The broader goal is to understand the 80386 microcode and hardware, and build an FPGA core around it, similar to what was already done for the 8086.