Det är allmänt känt att kod är skriven av en utvecklare och hur människor kommunicerar med datorer. Men har du någonsin tänkt på hur programvara som kod interagerar med datorhårdvara som en CPU (Central Processing Unit)? Om svaret är ja, då har du kommit till rätt ställe.
För att förstå hur kod exekveras på en dator måste du förstå vad som får en dator att ticka och hur den kan manipuleras. Låt oss först prata om de grundläggande idéerna för datorhårdvara innan vi går vidare till mjukvarusidan.
Vad är binärt?
Binärt är ett bas-2 talsystem som processorer och minne använder för att exekvera kod. Binära tal kan bara vara 1 eller 0, därav dess namn. Om du grupperar åtta binära tal (00000000) får du en så kallad byte, medan ett enda binärt tal (0) kallas en bit.
Hur en enkel switch producerar binära signaler
Allt logiskt med datorer med maskiner börjar med den enkla switchen. En enkel strömbrytare har två ledare och en anslutnings- och frånkopplingsmekanism. Genom att ansluta båda ledarna kan ström flyta, vilket ger en signal till den andra änden av ledaren. Å andra sidan, om ledarna är bortkopplade, kommer strömmen inte att flyta, vilket betyder att ingen signal kommer att produceras.
Eftersom en omkopplare endast kan vara på eller av vid ett tillfälle, tillhandahåller de den idealiska mekanismen för att skapa de höga och låga signalerna som används för att producera fyrkantsvågssignaler.
När du trycker på en switch producerar den en signal eller en bit data. Ett vanligt foto taget från en smartphone skulle vara cirka fem megabyte data, vilket motsvarar 40 000 000 bitar. Det skulle innebära att du måste snärta på strömbrytaren tiotals miljoner gånger bara för att producera tillräckligt med data för ett foto taget från din smartphone.
Med en switchs mekaniska begränsningar behövde ingenjörer något som inte hade några rörliga delar och som gav snabbare omkopplingshastigheter.
Transistorer som används som switch
Tack vare upptäckten av dopning (manipulering av den elektriska ledningsförmågan hos halvledare som kisel) kunde ingenjörer tillverka elektriskt styrda omkopplare som kallas transistorer. Denna nya uppfinning möjliggjorde snabbare bearbetningshastigheter som behövde lite spänning för att driva, vilket i slutändan gjorde det möjligt att stapla över en miljard av dessa transistorer på en enda modern CPU.
Vad är CPU-arkitektur?
Transistorerna är sedan skickligt arrangerade för att göra logiska grindar, halvadderare, adderare, flip-flops, multiplexorer, register och olika komponenter som gör CPU: n funktionell. Sättet som dessa komponenter har staplats definierar vad som kallas en CPU-arkitektur.
CPU-arkitekturen dikterar också en processors ISA (Instruction Set Architecture). En ISA har en inbyggd lista med instruktioner som en CPU kan köra inbyggt. Dessa instruktioner blandas sedan sekventiellt tillsammans genom ett programmeringsspråk för att göra det som kallas ett program. Vanligtvis är hundratals instruktioner lätt tillgängliga på en CPU, inklusive addition, subtraktion, flytta, spara och ladda.
Här är ett exempel på en instruktionsuppsättning:
Varje instruktion i en instruktionsuppsättning har sin egen binära adress känd som en opkod. Opkoden kommer att vara de första binära bitarna som talar om vilken operation från instruktionsuppsättningen som ska användas.
Efter opkoden följer operanden. Operaanden innehåller värden och adresser där opkoden kommer att användas.
Diagrammet visar en 8-bitars instruktion. Om en CPU har en 64-bitars arkitektur, kan instruktionerna sträcka sig över upp till 64 bitar i instruktionsbredd, vilket gör den till en mer kapabel processor.
Relaterad: Hur skiljer sig RISC- och CISC-processorer?
Assembleren
Nu när du förstår binära signaler kan du lära dig hur din dator tolkar sådana signaler. Hur maskinkod ska tolkas beror på vilken typ av logik som används på en assembler (ett lågnivåprogram som används för att avkoda och sätta ihop kod till korrekt binär).
Till exempel, om vår assembler använder ASCII-standarden (American Standard Code for Information Interchange), vår assembler skulle ta den angivna maskinkoden och tolka den på samma sätt som från ASCII i tabellen Nedan.
00101001 | A | 00101111 | G | 00110101 | M | 00111011 | S | 01000001 | Y |
00101010 | B | 00110000 | H | 00110110 | N | 00111100 | T | 01000010 | Z |
00101011 | C | 00110001 | jag | 00110111 | 0 | 00111101 | U | ||
00101100 | D | 00110010 | J | 00111000 | P | 00111110 | V | ||
00101101 | E | 00110011 | K | 00111001 | F | 00111111 | W | ||
00101110 | F | 00110100 | L | 00111010 | R | 0100000 | X |
Eftersom vår assembler använder ASCII (8-bitars version) tolkas vart åttonde binära tal i binären som ett tecken. Montören skulle ta denna byte och tolka den enligt de standarder som anges. Till exempel skulle 01000001 01101001 01010100 översättas till ordet "bit".
Förstå Assembly Language
Assembly Language är ett mänskligt läsbart programmeringsspråk på låg nivå som direkt manipulerar en CPU-arkitekturs opkoder och operander.
Här är ett exempel på en enkel monteringskod som använder instruktionsuppsättningen som visades tidigare:
1. LODA #5
2. LODB #7
3. LÄGG TILL R3
4. STRE M12
Detta kodblock lagras i RAM tills CPU: n hämtar varje kodrad en efter en.
CPU-cykeln för att hämta, avkoda och köra
CPU: n kör kod genom en cykel som kallas Hämta, avkoda och kör. Denna sekvens visar hur en CPU bearbetar varje kodrad.
Hämta: Instruktionsräknaren inom CPU: n tar en instruktionsrad från RAM-minnet för att låta CPU: n veta vilken instruktion som ska köras härnäst.
Avkoda: Assembler kommer att avkoda det mänskligt läsbara kodblocket och sätta ihop det som korrekt formaterade binärer för datorn att förstå.
1. 00010101
2. 00100111
3. 00110011
4. 01011100
Kör: CPU: n exekverar sedan binärfilerna genom att tillämpa instruktionerna som anges av op-koden på de tillhandahållna operanderna.
Datorn kommer Kör det som följer:
- Ladda det första registret med 5
- Ladda det andra registret med 7
- 5 + 7 = 12, spara 12 till det tredje registret
- Lagra värdet för det tredje registret i RAM-adressen M12
Datorn har framgångsrikt lagt samman två siffror och lagrat värdet på den angivna RAM-adressen.
Bra! Nu vet du hur en dator kör kod. Det slutar dock inte där.
Går längre
Med rätt hårdvara, en assembler och ett assemblerspråk kunde människor exekvera kod med rimlig lätthet. Men eftersom både program och datorhårdvara blev ännu mer komplexa, var ingenjörer och programmerare tvungna tänk på ett sätt att göra programmering mindre tråkig och säkerställa kompatibilitet med olika typer av CPU arkitektur. Alltså skapandet av kompilatorer och tolkar.
Vad är en kompilator och en tolk?
Kompilatorn och tolken är översättningsprogram som tar källkod (program gjorda av högnivåprogrammeringsspråk) och översätt dem till assemblerspråk, som assemblern sedan avkodar till binär.
En tolk kommer att ta en rad kod och omedelbart köra den. Detta används vanligtvis på terminaler som Linux Bash Shell-terminalen och Windows PowerShell-terminalen. Perfekt för att utföra enkla engångsuppgifter.
Däremot, a kompilator kommer att ta flera rader kod och kompilera dem för att göra ett program. Exempel på dessa program skulle vara Microsoft Word, Photoshop, Google Chrome, Safari och Steam.
Med skapandet av kompilatorer och tolkar skapades programmeringsspråk på hög nivå.
Programmeringsspråk på hög nivå
Programmeringsspråk på hög nivå är vilket språk som helst efter monteringskoden. Några av dessa språk du kanske är bekant med är C, Python, Java och Swift. Dessa programmeringsspråk gjorde programmering mer lättläst och enklare än assemblerspråket.
Här är en jämförelse sida vid sida för att illustrera hur svårare det är att programmera i montering än med ett högnivåprogrammeringsspråk som Python:
Båda koderna kommer att skriva ut "Hello World".
Med dessa programmeringsspråk kan utvecklare programmera spel, webbplatser, applikationer och drivrutiner med rimlig tid.
Relaterad: Python vs. Java: Det bästa språket för 2022
Datorer kan exekvera alla slags kod
En dator är en enhet som bara kan läsa binärt. Dessa binärer produceras av över en miljard transistorer av mikroskopisk storlek packade inuti en CPU. Transistorarrangemang dikterar en CPU: s ISA (Instruction Set Architecture), som ger hundratals instruktioner som en CPU lätt kan utföra när dess opkod ropas ut genom kod. Utvecklare blandar och matchar dessa instruktioner sekventiellt, vilket skapar ett helt program som spelmotorer, webbläsare, applikationer och drivrutiner.
En CPU exekverar kod genom en sekvens känd som hämta, avkoda, kör cykel. När en kodbit har laddats in i RAM-minnet kommer CPU: n att hämta dess innehåll en efter en, avkoda innehållet till binärt genom assemblern och sedan exekvera koden.
Eftersom assemblern bara kan översätta kod gjord explicit för CPU-arkitekturen, kompilatorer och tolkar byggdes ovanpå assemblern (ungefär som en adapter) för att fungera på olika typer av CPU arkitektur. En tolk tar ett kommando och utför det omedelbart. Däremot kommer en kompilator att ta alla dina kommandon och kompilera dem till ett återanvändbart program.
Programmeringsspråk på hög nivå som Python, C och Java har skapats för att göra programmering enklare, snabbare och bekvämare. Den stora majoriteten av programmerare behöver inte längre koda i assemblerspråk, eftersom deras lättanvända högnivåprogrammeringsspråk kan översättas till assembly genom en kompilator.
Förhoppningsvis har du nu en bättre förståelse för grunderna för datorer och hur de exekverar kod.
Det är en enkel fråga, men som alla funderar på då och då: hur fungerar den där datorn framför dig egentligen?
Läs Nästa
- Teknik förklaras
- Programmering
- Datorprocessor
- Bearbetning
Jayric Maning var sugen på att lära sig hur saker fungerade och började mixtra med alla typer av elektroniska och analoga enheter under sina tidigare tonåringar. Han började forensisk vetenskap vid universitetet i Baguio där han bekantade sig med datakriminalteknik och cybersäkerhet. Han håller för närvarande på med självstudier och pysslar med teknik för att ta reda på hur de fungerar och hur vi kan använda dem för att göra livet enklare (eller åtminstone coolare!).
Prenumerera på vårt nyhetsbrev
Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!
Klicka här för att prenumerera