Hackers brengen zelf microcode van Intel i386-processor in kaart

Een groep hackers heeft de volledige microcode van de Intel i386 in kaart gebracht. Dat deden ze op basis van beelden van de die van de processor, op dezelfde manier als waarop de hackers eerder de microcode van de 8086 wisten te achterhalen.

Hacker Andrew Jenner beschrijft op zijn blog hoe hij samen met een andere groep programmeurs de microcode van de i386, die ooit de Intel 80386 heette, wist te achterhalen. De 80386 kwam in 1985 uit als de eerste 32bit-processor van Intel. Jenner heeft al die microcode in een GitHub-repo gezet. Jenner doet dit niet voor het eerst; in 2023 bracht hij ook al de microcode van de nog oudere 8086 in kaart.

De i386 had echter heel wat meer voeten in de aarde, schrijft Jenner. Zo is de rom 94.720 bits in tegenstelling tot de 10.752 bits van de 8086. Dat maakt het 'extreem vervelend' om de hele codearchitectuur in kaart te brengen.

Maar belangrijker is dat Jenner helemaal geen informatie over de chip had. Bij het samenstellen van de 8086-microcode kon hij uitgaan van een patent, maar dat was er niet voor de 80386. Hij en een paar vrienden kregen het toen voor elkaar om met 'verschillende delen beeldverwerking, neurale netwerken en mensgestuurde automatisering' een binary blob uit een afbeelding van de die van de 80386 te halen.

Het grootste deel van het werk zat in het uitzoeken hoe de accelerators werkten. In de 8086 werden veel rekencycli door algoritmes aangestuurd, maar de 80386 gebruikt veel meer transistors die Jenner in kaart moest brengen. "Het zoeken hoe de interfaces tussen de accelerators, zoals de hardware om te vermenigvuldigen en te delen en de barrel shifter, was veel werk", schrijft hij.

Op de GitHub-pagina van Jenner staat meer informatie over hoe de microcode is opgesteld, maar andere hackers hebben inmiddels ook eigen blogposts geschreven waarin ze uitleggen hoe bijvoorbeeld de geheugenpipeline in de processor werkt.

Intel i386

Door Tijs Hofmans

Nieuwscoördinator

24-05-2026 • 13:37

32

Submitter: Radiant

Reacties (32)

Sorteer op:

Weergave:

De 80386 kwam in 1985 uit als de eerste 32bit-processor van Intel
Dit verdient wel een kleine nuance. Intern waren alle 80386's inderdaad 32-bits, maar extern was alleen de 80386DX 32-bits, de goedkopere 80386SX had namelijk 'slechts' een 16-bits databus om de prijs te drukken. Deze was vooral voor lower-end PC's bedoeld, de duurdere DX richtte zich meer op het high end segment.

Door die smallere databus kon de 80386SX maar 16 MB RAM adresseren (wat in die tijd overigens meer dan voldoende was). De 80386DX kon theoretisch tot 4 GB aansturen (wat in die tijd een absurde hoeveelheid was die je eigenlijk nooit tegen kwam).

Om die reden waren ook de optionele co-processoren anders, de 80387 werkte ook alleen maar met de 80386DX. Had je een 80386SX, moest je specifiek de 80387SX coprocessor hebben.
De breedte van een databus heeft niets te maken met het kunnen aanspreken van een bepaalde hoeveelheid geheugen.

Zowel de 386SX als DX konden theoretisch 4 GB aanspreken. Beiden hadden namelijk intern een 32 bit adresbus.

Dat de DX een 32 bit databus had, betekent alleen dat hij sneller data kan uitwisselen.

De SX werd door Intel met een externe adresbus van 24 bit uitgebracht (goedkopere moederborden) waardoor het daadwerkelijk maximum fysiek geheugen op 16 MB ligt. Bij de DX was dat de volledige 32 bit adresbus.
Het gaat inderdaad niet om de databus maar om de adresbus die bepaald hoeveel geheugen er geadresseerd kan worden. Intern werken beiden met dezelfde adresbereik maar als er geen lijntjes naar buiten gaan kan je er niets mee. Minder datalijnen betekend nog steeds intern met dezelfde aantal databits rekenen maar het uit het geheugen of IO lezen moet in twee keer, één keer de lage en één keer de hoge 16 bits.
Van die SX had ik destijds snel spijt toen ik doom ging spelen. Dat liep op de DX van een vriend een stuk beter. Maar ik vond het toen veel te duur om van mijn krantenwijkje te bekostigen.
Toen de 486 uit kwam behelste SX iets anders. In plaats van een kleinere databus miste de 486SX een coprocessor die in de DX wel aanwezig was. Weer trapte ik in de val. Een coprocessor vond ik niet nodig. Toen kwam Quake.
Dan kan ik je nu geruststellen: ik had een 486dx2-66 en daarop was Quake ook niet lekker speelbaar. Je had eigenlijk een Pentium nodig. Wat je wil gemist hebt uit de 486dx generatie is denk ik is de Second Reality demo. Of draaide dat ook op je je SX?

Quake begon pas echt voor mij bij Quake 2 op een Pentium II. En op de 486 was het vooral frustratie. Naast dat ik het omhoog moeten kijken en richten maar onhandig vond 😄
Doom op een 386 en dat liep ok? Dat lijkt me best sterk. In die tijd hadden wij thuis een 386DX (25 als ik het me goed herinner), maar daar draaide Wolfenstein niet eens lekker op. Doom op een 386 kan ik me niet eens voorstellen :P
De SX werd veel later dan de DX gelanceerd, dus tekst artikel is correct.

Kan de Intel release data zo snel niet vinden, maar op Wikipedia staan wel systeem release data:

"The first PC based on the Intel 80386 was the Compaq Deskpro 386, introduced in September 1986"

"The first computer system sold with the 386SX was the Compaq Deskpro 386S, released in July 1988"

Komt iig overeen met mijn herinnering.
wow, nostalgie. Ik kan mijn nog herinneren dat ik povray draaide op de compaq van 'de baas' (sterrekundige) met copro. 24 uur voor 1 plaatje 1024x768
De databus was inderdaad 16-bits, maar de reden waarom de 386SX 'slechts' 16MB kon aanspreken, was de adresbus: die was 24-bits breed in plaats van 32-bits. Bij de DX waren zowel de data- als de adresbus 32-bits.

Dat trucje deed Motorola een paar jaar eerder met de 68000, waardoor er relatief goedkope computers met die CPU gebouw konden worden.
Is dit bericht bewust om 13:37 gepubliceerd ? ;)


Verder interessant om te lezen, toch knap hoe mensen dit kunnen.
.Geek wordt (volgens mij) om 13:37 geplubiceerd.


Toch maar even nagekeken, blijkt dat mijn bovenstaande reactie onjuist is.
Doch weet ik dat sommige nieuws items wel bewust om 13:37 gepost worden. Waar dat precies vanaf hangt, geen idee.

[Reactie gewijzigd door WeirdScience op 24 mei 2026 13:51]

Categorie Geek. 1337 = leet in leetspeak, leet is afgeleid van elite, internetjargon voor elite dus. De ‘gemiddelde geek zal dit wel begrijpen. :Y)
De 80386 kwam in 1985 uit als de eerste 32bit-processor van Intel.
Onwaar. Intel bracht diens eerste 32-bit processor uit in 1981.

[Reactie gewijzigd door The Zep Man op 24 mei 2026 13:44]

Link dan direct naar de processor zelf: Intel iAPX 432.
@TijsZonderH

Waarom een afbeelding van een socket A cpu bij dit artikel? Een 80386 is een PGA132 cpu, dat ziet er zo uit: https://thandor.net/data/object/472/1016.jpg
Uit de tijd dat de pinnetjes nog enigszins telbaar waren. Onvoorstelbaar hoe de techniek gegroeid is en hoe klein de aansluitingen nu zijn, soms zelfs in de vorm van bolletjes tegenwoordig.
Klopt, maar die moderne aansluitingen zijn imho toch echt wel een vooruitgang te noemen. Niet elke verandering is per se een verbetering, maar imho is dit er wel één van. De CPU-sockets van nu zijn relatief fool-proof.

Die pennetjes op die oude 80386's (en ook de 80486 had die pennetjes nog) waren dat niet echt, ze waren namelijk best wel fragiel.

Je moest ze in dit soort sockets proppen: https://www.s100computers...Board-II/CPU%20Socket.jpg

En je zou de eerste niet zijn die één (of meer...) pennetjes verboog (of zelfs afbrak...) als je hem niet precies goed in het socket stopte. Dat zijn nu al dure geintjes, maar processoren waren destijds (relatief gezien) aanzienlijk duurder..
En toch, áls je dan 1 of meerdere pinnetjes verboog, dan kon je ze met wat geduld ook wel weer rechtbuigen. Als er met de huidige sockets 1 van die veercontactjes verbogen raakt, is het praktisch onmogelijk om dat nog weer te herstellen...
Ik heb tientallen pc's in elkaar geschroeft en je moest best lomp zijn om een cpu te verkloten. Ze vielen gewoon in de socket. Zo niet, zat er iets niet goed. Duwen was het verkeerde instinct om dat op te lossen.
Je moest wel kracht zetten om ze vast te zetten. Er was toen nog geen handeltje aan de socket om je daar bij te helpen. Dus inderdaad cpu op de plek laten glijden, en dan met je duim recht naar beneden aandrukken. Om ze los te krijgen, moest je met een platte schroevendraaier wrikken :). Het was dus wel zaak om dat alles met enig beleid te doen...
Ja je hebt gelijk. Mijn punt was meer dat je kon weten dat de cpu op z'n plek zat. Anyhow, blij dat die tijden voorbij zijn. 😊
Ik weet ook nog wel dat ik heeeeel lang geleden per ongeluk eentje verboog. Met een pinpas weer recht weten te buigen en gewoon weer gaan met de banaan! Dat hoef je met een i7 7700k bijvoorbeeld niet te proberen (wat ik door een stomme fout van mijzelf ook ooit een keer gehad heb…)…
@TijsZonderH

Er staat twee keer dezelfde soort fout in de tekst:

- Dat deden ze op basis van beelden van de die van de processor
- Hij en een paar vrienden kregen het toen voor elkaar om met 'verschillende delen beeldverwerking, neurale netwerken en mensgestuurde automatisering' een binary blob uit een afbeelding van de die van de 80386 te halen.
De "die" is een woord voor een onderdeel van de processor en word dus in dit geval niet gebruikt als het Nederlandse aanwijzend voornaamwoord "die".
edit:
spelfout

[Reactie gewijzigd door GoingToaster299 op 24 mei 2026 14:11]

Dat is geen fout. Er zijn vast tweakers die het beter kunnen uitleggen, maar een "die" is volgens mij heel simpel gezegd de daadwerkelijk "chip" op een cpu-package. Correct me if I'm wrong...
Een die is een stukje wafer. Een wafer 'dice' (snij) je in stukjes, een stukje is een 'die'. Deze 'die' is klein en fragiel, dus die stop je in een behuizing met pinnen/pads zodat je hem makkelijker kunt gebruiken. Het complete ding is een 'chip'. Tegenwoordig kan een chip ook uit meerdere 'dies' bestaan, zoals bij HBM geheugen op je nVidia AI-accelerator chip.

eheijnen maakt de claim dat de foto's van de 'die' zijn en niet van de 'chip'. Zoals je aangeeft zit een 'die' in de 'chip' dus de foto's zijn van de 'die' in de 'chip'. Hoewel ik er zelf niet over zou vallen is de 'die' wel specifieker omdat wat aan geeft wat het interessante deel was van de foto. Foto's van de behuizing zouden in dit geval nooit iets kunnen zeggen over de microcode.

Als je dan toch heel specifiek wilt zijn, in een 80386 zit een vast ROM deel met de microcode erin. Tegenwoordig is microcode niet meer 'hardcoded' in de chip. Deze ROM vind je dan rechtsonder op deze foto: https://static.righto.com/images/386-clock/386-die-labeled.jpg

Op de foto zie je geen condensatoren, en ook geen NAND/NOR flash (transistor). Je zie een array van transistoren, waar ze de transistor niet aansluiten als het een 0 waarde is. Je kunt dus, als je een hoge resolutie foto hebt, zien waar de transistor is aangesloten en waar niet. Als je een beetje handig bent kun je AI iedere aansluiting laten beoordelen en zo dus de ROM uitlezen.

[Reactie gewijzigd door tedades op 24 mei 2026 15:03]

Dank voor de verduidelijking.
Leuke afbeelding om je eerste alinea te illustreren: https://en.wikipedia.org/wiki/Pin_grid_array#/media/File:80486_open.jpg. Is wel van een 80486, maar het gaat om het principe...
"die" is ook Engels voor "chip" :Y)
Niet helemaal, "chip" is het eind product, "die" is het stukje uit de wafer dat in de "chip" gaat.
Nee hoor. Das geen fout.
Wikipedia: Die (integrated circuit)
;)

Ik ben het wel met je eens dat het op het eerste gezicht wat onduidelijk is, en dat een Engels woord wat ook bestaat in de Nederlandse taal iets duidelijker gemarkeerd mag zijn.. bijvoorbeeld cursief of zo. Of met een linkje eronder.
een binary blob uit een afbeelding van de die van de 80386 te halen.
een binary blob is gecompileerde code, die was nooit in de afbeelding opgeslagen :X
The 80386 was a complete black box. I knew what it did and had a rough idea of how it might work but that turning that into something that I could search for in a big blob of binary seemed like an insurmountable challenge.

Some years later, I was talking to GloriousCow and Smartest Blob (possibly amongst others) on Discord and they mentioned that it would be interesting to get high resolution images of the 80386 die and try to extract the microcode from it. I mentioned that the first part had already been done but that turning the image into a binary blob and a binary blob into intelligible microcode seemed too hard. Well, they may have taken that as a bit of a challenge - they threw various bits of image processing, neural networks, and human-aided automation at the problem and a few days later had the binary blob extracted from the image and cross-checked.
Ze wisten dus ongeveer wat het eindresultaat moest zijn en op basis van afbeeldingen hebben ze er zelf een afleiding uit gemaakt. Het is alsof je een montagehandleiding maakt voor een toestel waarvan je weet welke onderdelen er in zouden moeten zitten.
Even afgezien van "gaaf dat ze dit voor elkaar hebben gekregen", zit hier voor hackers nog een praktische toepassing aan? Zou je nu alles kunnen uitlezen wat er door een i386 heengaat en zo aan kunnen sturen?

Om te kunnen reageren moet je ingelogd zijn