Opće je poznato da kod piše programer i kako ljudi komuniciraju s računalima. Međutim, jeste li ikada razmišljali o tome kako softver poput koda stupa u interakciju s računalnim hardverom kao što je CPU (centralna procesorska jedinica)? Ako je odgovor potvrdan, onda ste došli na pravo mjesto.

Da biste razumjeli kako se kod izvršava na računalu, morate razumjeti što čini računalo otkucano i kako se njime može manipulirati. Prvo, razgovarajmo o temeljnim idejama računalnog hardvera prije nego što pređemo na softversku stranu stvari.

Što je binarno?

Binarni je brojevni sustav s bazom 2 koji procesori i memorija koriste za izvršavanje koda. Binarni brojevi mogu biti samo 1 ili 0, otuda i njegov naziv. Ako grupirate osam binarnih brojeva (00000000), dobit ćete ono što je poznato kao bajt, dok se jedan binarni broj (0) naziva bit.

Kako jednostavan prekidač proizvodi binarne signale

Sve logično u vezi s računalstvom sa strojevima počinje jednostavnim prekidačem. Jednostavna sklopka ima dva vodiča i mehanizam za spajanje i rastavljanje. Spajanje oba vodiča omogućuje protok struje, što proizvodi signal drugom kraju vodiča. S druge strane, ako su vodiči odspojeni, struja neće teći, što znači da se neće proizvoditi signal.

instagram viewer

Zasluga slike: 991joseph/Wikimedia Commons

Budući da prekidač može biti uključen ili isključen samo u jednom slučaju, oni pružaju idealan mehanizam za stvaranje visokih i niskih signala koji se koriste za proizvodnju pravokutnih signala.

Kada pritisnete prekidač, proizvodi se signal ili jedan bit podataka. Obična fotografija snimljena s pametnog telefona imala bi oko pet megabajta podataka, što je jednako 40.000.000 bita. To bi značilo da ćete morati pritisnuti prekidač desetke milijuna puta samo da proizvedete dovoljno podataka za jednu fotografiju snimljenu s vašeg pametnog telefona.

S mehaničkim ograničenjima prekidača, inženjeri su trebali nešto što nema pokretnih dijelova i osigurava veće brzine prebacivanja.

Tranzistori koji se koriste kao prekidač

Zasluga slike tranzistora: Evan-Amos/Wikimedija i Square Wave Image Zasluga: Sponk/Wikimedija

Zahvaljujući otkriću dopinga (manipuliranja električnom vodljivošću poluvodiča poput silicija), inženjeri su uspjeli izraditi električno kontrolirane prekidače poznate kao tranzistori. Ovaj novi izum omogućio je veće brzine obrade za koje je bio potreban mali napon za napajanje, što je u konačnici omogućilo slaganje preko milijarde ovih tranzistora na jedan moderni CPU.

Što je CPU arhitektura?

Tranzistori su tada pametno raspoređeni tako da naprave logička vrata, polu-zbrajače, zbrajače, japanke, multipleksore, registre i razne komponente koje CPU čine funkcionalnim. Način na koji su te komponente složene definira ono što je poznato kao CPU arhitektura.

Arhitektura CPU-a također diktira procesorsku ISA (arhitekturu skupa instrukcija). ISA sadrži ugrađeni popis instrukcija koje CPU može izvršiti nativno. Ove upute se zatim uzastopno miješaju zajedno kroz programski jezik kako bi se napravilo ono što je poznato kao program. Obično su stotine instrukcija lako dostupne na CPU-u, uključujući zbrajanje, oduzimanje, premještanje, spremanje i učitavanje.

Ovdje je primjer skupa instrukcija:

Uzorak skupa instrukcija

Svaka instrukcija u skupu instrukcija ima svoju binarnu adresu poznatu kao opcode. Opkod će biti prvih nekoliko binarnih bitova koji govore koju operaciju iz skupa instrukcija koristiti.

Sastavljanje-instrukcija-sintaksa

Nakon koda operacije nalazi se operand. Operand sadrži vrijednosti i adrese na kojima će se koristiti kod.

Dijagram prikazuje 8-bitnu instrukciju. Ako CPU ima 64-bitnu arhitekturu, instrukcije se mogu širiti do 64 bita, što ga čini sposobnijim procesorom.

Povezano: Po čemu se razlikuju RISC i CISC procesori?

Asembler

Sada kada razumijete binarne signale, možete naučiti kako vaše računalo tumači takve signale. Kako će se strojni kod tumačiti ovisi o vrsti logike koja se koristi na asembleru (program niske razine koji se koristi za dekodiranje i sastavljanje koda u ispravan binarni program).

Na primjer, ako naš asembler koristi standard ASCII (Američki standardni kod za razmjenu informacija), naš asembler bi uzeo zadani strojni kod i interpretirao ga isto kao iz ASCII-a u tablici ispod.

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

Budući da naš asembler koristi ASCII (8-bitna verzija), svakih osam binarnih brojeva u binarnom sistemu tumači se kao jedan znak. Asembler bi uzeo ovaj bajt i interpretirao ga prema danim standardima. Na primjer, 01000001 01101001 01010100 preveo bi se u riječ "bit".

Razumijevanje asemblerskog jezika

Jezik asemblera je čovjeku čitljiv programski jezik niske razine koji izravno manipulira operacijskim kodovima i operandima CPU arhitekture.

Evo primjera jednostavnog sklopnog koda koji koristi skup instrukcija prikazan ranije:

1. LODA #5 
2. LODB #7
3. DODAJ R3
4. STRE M12

Ovaj blok koda je pohranjen u RAM-u sve dok CPU ne dohvati svaki redak koda jedan po jedan.

Ciklus dohvaćanja, dekodiranja i izvršavanja CPU-a

CPU izvršava kod kroz ciklus poznat kao dohvaćanje, dekodiranje i izvršavanje. Ovaj slijed pokazuje kako CPU obrađuje svaki redak koda.

Dohvati: Brojač instrukcija unutar CPU-a uzima jednu liniju instrukcija iz RAM-a kako bi CPU znao koju naredbu treba izvršiti sljedeće.

dekodirati: Asembler će dekodirati ljudski čitljiv blok koda i sastaviti ga kao pravilno formatirane binarne datoteke kako bi ih računalo razumjelo.

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

Izvršiti: CPU zatim izvršava binarne datoteke primjenom instrukcija naznačenih kodom operacije na dane operande.

Računalo će izvršiti to kako slijedi:

  1. Učitajte prvi registar s 5
  2. Učitajte drugi registar sa 7
  3. 5 + 7 = 12, spremite 12 u treći registar
  4. Spremite vrijednost trećeg registra na RAM adresu M12

Računalo je uspješno zbrojilo dva broja i pohranilo vrijednost na navedenu RAM adresu.

Sjajno! Sada znate kako računalo izvršava kod. Međutim, tu se ne zaustavlja.

Ići dalje

Uz odgovarajući hardver, asembler i asemblerski jezik, ljudi bi mogli izvršavati kod s razumnom lakoćom. Međutim, kako su i programi i računalni hardver postali još složeniji, inženjeri i programeri su morali smislite način da programiranje učinite manje zamornim i osigurate kompatibilnost s različitim vrstama CPU-a arhitektura. Tako je stvaranje kompilatora i interpretatora.

Što je prevodilac i interpreter?

Prevoditelj i interpreter su translacijski programi koji preuzimaju izvorni kod (programi napravljeni od programski jezici visoke razine) i prevesti ih u asemblerski jezik koji će asembler potom dekodirati na binarni.

An tumač uzet će jedan redak koda i odmah ga izvršiti. Ovo se obično koristi na terminalima kao što su Linux Bash Shell terminal i Windows PowerShell terminal. Izvrsno za obavljanje jednostavnih jednokratnih zadataka.

Zasluga slike: Rlistmedia/Wikimedia Common

Nasuprot tome, a prevodilac uzet će više redaka koda i kompajlirati ih za izradu programa. Primjeri ovih programa bili bi Microsoft Word, Photoshop, Google Chrome, Safari i Steam.

Stvaranjem kompilatora i interpretatora nastali su programski jezici visoke razine.

Programski jezici visoke razine

Programski jezici visoke razine su bilo koji jezik nakon asemblerskog koda. Neki od ovih jezika koji su vam možda poznati su C, Python, Java i Swift. Ovi programski jezici učinili su programiranje čitljivijim i jednostavnijim od asemblerskog jezika.

Ovdje je usporedba usporedbe koja ilustrira koliko je teže programirati u asembleru nego s programskim jezikom visoke razine poput Pythona:

Oba koda će ispisati "Hello World".

S tim programskim jezicima programeri mogu programirati igre, web-mjesta, aplikacije i upravljačke programe, uz razumnu količinu vremena.

Povezano: Python vs. Java: Najbolji jezik za 2022

Računala mogu izvršiti sve vrste koda

Računalo je uređaj koji može čitati samo binarno. Ove binarne datoteke proizvodi preko milijardu tranzistora mikroskopske veličine upakiranih u CPU. Raspored tranzistora diktira CPU-ovu ISA (Arhitekturu skupa instrukcija), koja pruža stotine instrukcija koje CPU može lako izvesti nakon što se njegov opkod prozove putem koda. Programeri miješaju i usklađuju ove upute uzastopno, što stvara cijeli program kao što su motori za igre, web preglednici, aplikacije i upravljački programi.

CPU izvršava kod kroz sekvencu poznatu kao ciklus dohvaćanja, dekodiranja i izvršavanja. Nakon što se dio koda učita u RAM, CPU će dohvatiti njegov sadržaj jedan po jedan, dekodirati sadržaj u binarno putem asemblera, a zatim izvršiti kod.

Budući da asembler može prevesti samo kod napravljen eksplicitno za arhitekturu procesora, prevodioci i interpreteri su izgrađeni na vrhu asemblera (slično kao adapter) za rad na različitim tipovima CPU-a arhitektura. Tumač će preuzeti jednu naredbu i odmah je izvršiti. Nasuprot tome, prevodilac će uzeti sve vaše naredbe i prevesti ih u program koji se može ponovno koristiti.

Programski jezici visoke razine kao što su Python, C i Java stvoreni su kako bi programiranje učinili lakšim, bržim i praktičnijim. Velika većina programera više ne mora kodirati u asemblerskom jeziku, budući da se njihovi programski jezici visoke razine koji su jednostavni za korištenje mogu prevesti u sklop putem prevoditelja.

Nadamo se da sada bolje razumijete osnove računala i kako ona izvršavaju kod.

Kako računalo radi i što je unutra?

To je jednostavno pitanje, ali ono o kojem svi s vremena na vrijeme razmišljaju: kako zapravo radi to računalo ispred vas?

Pročitajte dalje

UdioCvrkutE-mail
Povezane teme
  • Objašnjena tehnologija
  • Programiranje
  • Računalni procesor
  • Obrada
O autoru
Jayric Maning (Objavljeno 5 članaka)

Žudeći da nauči kako stvari funkcioniraju, Jayric Maning je tijekom svojih ranijih tinejdžerskih godina počeo petljati sa svim vrstama elektroničkih i analognih uređaja. Pohađao je forenziku na Sveučilištu u Baguiu gdje se upoznao s računalnom forenzikom i kibernetičkom sigurnošću. Trenutačno radi puno samostalnog učenja i petlja s tehnologijom otkrivajući kako funkcioniraju i kako ih možemo upotrijebiti da život učinimo lakšim (ili barem hladnijim!).

Više od Jayrica Maninga

Pretplatite se na naše obavijesti

Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e-knjige i ekskluzivne ponude!

Kliknite ovdje za pretplatu