Det er almindeligt kendt, at kode er skrevet af en udvikler, og hvordan mennesker kommunikerer til computere. Men har du nogensinde tænkt over, hvordan software såsom kode interagerer med computerhardware såsom en CPU (Central Processing Unit)? Hvis svaret er ja, så er du kommet til det rigtige sted.

For at forstå, hvordan kode udføres på en computer, skal du forstå, hvad der får en computer til at tikke, og hvordan den kan manipuleres. Lad os først tale om de grundlæggende ideer om computerhardware, før vi går videre til softwaresiden af ​​tingene.

Hvad er binært?

Binært er et base-2 talsystem, som processorer og hukommelse bruger til at udføre kode. Binære tal kan kun være 1 eller 0, deraf navnet. Hvis du grupperer otte binære tal (00000000), får du det, der er kendt som en byte, mens et enkelt binært tal (0) kaldes en bit.

Hvordan en simpel switch producerer binære signaler

Alt logisk ved computere med maskiner starter med den simple switch. En simpel kontakt har to ledere og en til- og frakoblingsmekanisme. Tilslutning af begge ledere tillader strøm at flyde, hvilket producerer et signal til den anden ende af lederen. På den anden side, hvis lederne er afbrudt, vil strømmen ikke flyde, hvilket betyder, at der ikke vil blive produceret noget signal.

instagram viewer

Billedkredit: 991joseph/Wikimedia Commons

Da en switch kun kan være tændt eller slukket på et tidspunkt, giver de den ideelle mekanisme til at lave de høje og lave signaler, der bruges til at producere firkantbølgesignaler.

Når du trykker på en kontakt, producerer den et signal eller en bit data. Et almindeligt billede taget fra en smartphone ville være omkring fem megabyte data, svarende til 40.000.000 bits. Det ville betyde, at du bliver nødt til at trykke på kontakten titusinder af gange bare for at producere nok data til ét billede taget fra din smartphone.

Med en switchs mekaniske begrænsninger havde ingeniører brug for noget, der ikke havde nogen bevægelige dele og sørgede for hurtigere omskiftningshastigheder.

Transistorer bruges som switch

Transistor billedkredit: Evan-Amos/Wikimedia og Square Wave Billedkredit: Sponk/Wikimedia

Takket være opdagelsen af ​​doping (manipulation af den elektriske ledningsevne af halvledere som silicium), var ingeniører i stand til at lave elektrisk styrede kontakter kendt som transistorer. Denne nye opfindelse muliggjorde hurtigere behandlingshastigheder, der krævede lidt spænding for at drive, hvilket i sidste ende gjorde det muligt at stable over en milliard af disse transistorer på en enkelt moderne CPU.

Hvad er CPU-arkitektur?

Transistorerne er derefter smart arrangeret til at lave logiske porte, halvaddere, addere, flip flops, multipleksere, registre og forskellige komponenter, der gør CPU'en funktionel. Den måde, hvorpå disse komponenter er blevet stablet, definerer, hvad der er kendt som en CPU-arkitektur.

CPU-arkitekturen dikterer også en processors ISA (Instruction Set Architecture). En ISA har en indbygget liste over instruktioner, som en CPU kan udføre native. Disse instruktioner blandes derefter sekventielt sammen gennem et programmeringssprog for at lave det, der er kendt som et program. Normalt er hundredvis af instruktioner let tilgængelige på en CPU, inklusive addition, subtraktion, flyt, gem og indlæs.

Her er et eksempel på et instruktionssæt:

Instruktionssæt-prøve

Hver instruktion i et instruktionssæt har sin egen binære adresse kendt som en opkode. Opkoden vil være de første par binære bits, der fortæller hvilken operation fra instruktionssættet der skal bruges.

Samling-instruktion-syntaks

Efter opkoden er operanden. Operaanden indeholder værdier og adresser, hvor opkoden vil blive brugt.

Diagrammet viser en 8-bit instruktion. Hvis en CPU har en 64-bit arkitektur, så kan instruktionerne spænde over op til 64 bit i instruktionsbredde, hvilket gør den til en mere kapabel processor.

Relaterede: Hvordan er RISC- og CISC-CPU'er forskellige?

Samleren

Nu hvor du forstår binære signaler, kan du lære om, hvordan din computer fortolker sådanne signaler. Hvordan maskinkode skal fortolkes afhænger af den type logik, der bruges på en assembler (et lavniveauprogram, der bruges til at afkode og samle kode til korrekt binær).

For eksempel, hvis vores assembler bruger ASCII-standarden (American Standard Code for Information Interchange), vores assembler ville tage den angivne maskinkode og fortolke den på samme måde som fra ASCII i tabellen under.

00101001 EN 00101111 G 00110101 M 00111011 S 01000001 Y
00101010 B 00110000 H 00110110 N 00111100 T 01000010 Z
00101011 C 00110001 jeg 00110111 0 00111101 U
00101100 D 00110010 J 00111000 P 00111110 V
00101101 E 00110011 K 00111001 Q 00111111 W
00101110 F 00110100 L 00111010 R 0100000 x

Da vores assembler bruger ASCII (8-bit version), fortolkes hver ottende binære tal i binæren som ét tegn. Samleren ville tage denne byte og fortolke den i overensstemmelse med de givne standarder. For eksempel vil 01000001 01101001 01010100 oversættes til ordet "bit".

Forståelse af Assembly Language

Assembly Language er et menneskeligt læsbart programmeringssprog på lavt niveau, der direkte manipulerer en CPU-arkitekturs opkoder og operander.

Her er et eksempel på en simpel monteringskode ved hjælp af instruktionssættet vist tidligere:

1. LODA #5 
2. LODB #7
3. TILFØJ R3
4. STRE M12

Denne kodeblok gemmes i RAM, indtil CPU'en henter hver kodelinje én efter én.

CPU-hentnings-, afkodnings- og eksekveringscyklussen

CPU'en udfører kode gennem en cyklus kendt som Fetch, Decode og Execute. Denne sekvens viser, hvordan en CPU behandler hver linje kode.

Hent: Instruktionstælleren i CPU'en tager en instruktionslinje fra RAM for at lade CPU'en vide, hvilken instruktion der skal udføres næste gang.

Afkode: Assembleren vil afkode den menneskelæselige kodeblok og samle den som korrekt formaterede binære filer, som computeren kan forstå.

1. 00010101 
2. 00100111
3. 00110011
4. 01011100

Udfør: CPU'en udfører derefter de binære filer ved at anvende instruktionerne angivet af opkoden til de angivne operander.

Computeren vil udføre det som følger:

  1. Indlæs det første register med 5
  2. Indlæs det andet register med 7
  3. 5 + 7 = 12, gem 12 til det tredje register
  4. Gem værdien af ​​det tredje register til RAM-adresse M12

Computeren har tilføjet to tal sammen og gemt værdien på den angivne RAM-adresse.

Store! Nu ved du, hvordan en computer udfører kode. Det stopper dog ikke der.

Går videre

Med den rette hardware, en assembler og et assemblersprog kunne folk udføre kode med rimelig lethed. Men da både programmer og computerhardware blev endnu mere komplekse, var ingeniører og programmører nødt til det tænk på en måde at gøre programmering mindre besværlig og sikre kompatibilitet med forskellige slags CPU arkitektur. Således skabelsen af ​​kompilatorer og tolke.

Hvad er en compiler og en tolk?

Compileren og fortolkeren er oversættelsesprogrammer, der tager kildekode (programmer lavet af programmeringssprog på højt niveau) og oversæt dem til assemblersprog, som assembleren derefter vil afkode til binær.

An tolk vil tage en linje kode og straks udføre den. Dette bruges normalt på terminaler som Linux Bash Shell-terminalen og Windows PowerShell-terminalen. Fantastisk til at udføre simple enkeltstående opgaver.

Billedkredit: Rlistmedia/Wikimedia Common

I modsætning hertil, en compiler vil tage flere linjer kode og kompilere dem for at lave et program. Eksempler på disse programmer er Microsoft Word, Photoshop, Google Chrome, Safari og Steam.

Med skabelsen af ​​compilere og tolke blev der skabt programmeringssprog på højt niveau.

Programmeringssprog på højt niveau

Programmeringssprog på højt niveau er et hvilket som helst sprog efter monteringskode. Nogle af disse sprog, du måske er bekendt med, er C, Python, Java og Swift. Disse programmeringssprog gjorde programmering mere menneskelig læsbar og enklere end assemblersproget.

Her er en side om side sammenligning for at illustrere, hvor sværere det er at programmere i assembly end med et højt niveau programmeringssprog som Python:

Begge koder vil udskrive "Hello World."

Med disse programmeringssprog kan udviklere programmere spil, websteder, applikationer og drivere med rimelig tid.

Relaterede: Python vs. Java: Det bedste sprog for 2022

Computere kan udføre alle former for kode

En computer er en enhed, der kun kan læse binært. Disse binære filer er produceret af over en milliard transistorer i mikroskopisk størrelse pakket inde i en CPU. Transistorarrangementet dikterer en CPU's ISA (Instruction Set Architecture), som giver hundredvis af instruktioner, som en CPU let kan udføre, når først dens opkode kaldes ud gennem kode. Udviklere blander og matcher disse instruktioner sekventielt, hvilket skaber et helt program såsom spilmotorer, webbrowsere, applikationer og drivere.

En CPU udfører kode gennem en sekvens kendt som hente, afkode, udføre cyklus. Når et stykke kode er indlæst i RAM, vil CPU'en hente dets indhold én efter én, afkode indholdet til binært gennem assembleren og derefter udføre koden.

Da assembleren kun kan oversætte kode lavet eksplicit til CPU-arkitekturen, compilere og tolke blev bygget oven på assembleren (meget som en adapter) til at arbejde på forskellige typer CPU arkitektur. En tolk vil tage én kommando og udføre den med det samme. I modsætning hertil vil en compiler tage alle dine kommandoer og kompilere dem til et genbrugeligt program.

Programmeringssprog på højt niveau som Python, C og Java er blevet skabt for at gøre programmering nemmere, hurtigere og bekvemt. Det store flertal af programmører skal ikke længere kode i assemblersprog, da deres letanvendelige programmeringssprog på højt niveau kan oversættes til assembly gennem en compiler.

Forhåbentlig har du nu en bedre forståelse af det grundlæggende i computere, og hvordan de udfører kode.

Hvordan fungerer en computer, og hvad er der indeni?

Det er et simpelt spørgsmål, men som alle overvejer fra tid til anden: hvordan fungerer den computer foran dig egentlig?

Læs Næste

DelTweetE-mail
Relaterede emner
  • Teknologi forklaret
  • Programmering
  • Computer processor
  • Forarbejdning
Om forfatteren
Jayric Maning (5 artikler udgivet)

Med lyst til at lære, hvordan tingene fungerede, begyndte Jayric Maning at pille ved alle slags elektroniske og analoge enheder i sine tidligere teenageår. Han begyndte retsmedicin på universitetet i Baguio, hvor han stiftede bekendtskab med computerforensik og cybersikkerhed. Han laver i øjeblikket masser af selvstudium og roder med teknologi for at finde ud af, hvordan de fungerer, og hvordan vi kan bruge dem til at gøre livet lettere (eller i det mindste sejere!).

Mere fra Jayric Maning

Abonner på vores nyhedsbrev

Tilmeld dig vores nyhedsbrev for tekniske tips, anmeldelser, gratis e-bøger og eksklusive tilbud!

Klik her for at abonnere