Beste antwoord
Vraag: Wat betekent 01001001 in binaire code?
Antwoord: In welke context?
01001001 aan en IBM 360 is hex 49 of CH wat Compare Half Word opcode is. Het wordt op een IBM-kaart ingevoerd als 12–1–8 punch.
01 001 001 Gegroepeerd als octaal is 1 1 1, dus op een CDC 600 zou dit “A9” zijn.
In veldgegevens op een Univac zou dit het karakter “D” zijn.
Wat is context?
Antwoord
Windows 10 draait al als binaire code (machine taal). Het werd gecompileerd van broncode (meestal C en C ++) tot machinecode (binair) met behulp van optimaliserende compilers.
Dus dan wordt de vraag … zou een persoon (eigenlijk een groot team van experts met een gigantisch budget en heel veel van tijd) Windows 10 helemaal opnieuw in machinetaal herschrijven en betere prestaties behalen dan de machinetaal die wordt gegenereerd door de optimaliserende compilers die tegenwoordig worden gebruikt?
Optimizers zijn tegenwoordig erg goed – zo goed dat het moeilijk kan zijn om gegenereerde code te vinden die met de hand kan worden geoptimaliseerd om beter te presteren en op hetzelfde niveau van betrouwbaarheid. Houd er rekening mee dat er in Windows 10 ongeveer 50 miljoen regels taalbroncode op hoog niveau zijn, en dat elk van die regels potentieel kan worden vertaald naar vele regels assembleertaal, en dat elke regel assembleertaal doorgaans vertaalt naar één en meerdere bytes machinecode.
Met dit alles in gedachten, als we het hebben over een volledige herschrijving van het besturingssysteem vanaf nul in machinecode, zou 99\% (of meer) van de inspanning niet meer resulteren efficiënte machinecode, zodat een deel van de moeite zou worden verspild. En de resterende mogelijke 1\% van de gevallen waarin de code beter zou presteren, zou astronomische kosten met zich meebrengen. En dat is als je genoeg experts met voldoende kennis van de architectuur zou kunnen vinden om af en toe betere code te schrijven dan de optimaliserende compiler kan genereren.
Als iemand (of een team) deze taak zou proberen, zou de juiste aanpak zijn om profileringstools te gebruiken om te zoeken naar CPU-gebonden bottlenecks in het besturingssysteem, zorgvuldig te kijken naar de door de compiler gegenereerde code en te kijken of handmatige afstemming van de code (of een wijziging in de optimalisatieopties van de compiler) de prestaties zou kunnen verbeteren. / p>
Sinds ongeveer 1989 heeft Microsoft eigenlijk een team om de prestaties van verschillende OS-componenten zorgvuldig te analyseren, knelpunten te zoeken en verbeteringen aan te brengen op die gebieden.
Dat is de juiste manier om software in het algemeen optimaliseren: meet daadwerkelijk, zoek naar bottlenecks en kijk wat er aan elk ervan kan worden gedaan.
Alleen al het herschrijven van een heel gigantisch softwareproduct in een low-level taal is een enorme verspilling van tijd en middelen .