Visiems žinoma, kad kodą rašo kūrėjas ir kaip žmonės bendrauja su kompiuteriais. Tačiau ar kada nors pagalvojote apie tai, kaip programinė įranga, pvz., kodas, sąveikauja su kompiuterio aparatine įranga, tokia kaip CPU (centrinis procesorius)? Jei atsakymas yra taip, vadinasi, atėjote į reikiamą vietą.
Norėdami suprasti, kaip kodas vykdomas kompiuteryje, turite suprasti, kas verčia kompiuterį pažymėti ir kaip juo galima manipuliuoti. Pirmiausia pakalbėkime apie pagrindines kompiuterio aparatinės įrangos idėjas, prieš pereidami prie programinės įrangos pusės.
Kas yra dvejetainis?
Dvejetainė yra 2 bazinių skaičių sistema, kurią procesoriai ir atmintis naudoja kodui vykdyti. Dvejetainiai skaičiai gali būti tik 1 arba 0, taigi ir jo pavadinimas. Jei sugrupuosite aštuonis dvejetainius skaičius (00000000), gausite tai, kas vadinama baitu, o vienas dvejetainis skaičius (0) vadinamas bitu.
Kaip paprastas jungiklis sukuria dvejetainius signalus
Viskas, kas logiška dirbant su mašinomis, prasideda nuo paprasto jungiklio. Paprastas jungiklis turi du laidus ir sujungimo bei atjungimo mechanizmą. Sujungus abu laidininkus, galima tekėti srovei, kuri duoda signalą į kitą laidininko galą. Kita vertus, jei laidininkai yra atjungti, srovė netekės, o tai reiškia, kad nebus gaunamas signalas.
Kadangi jungiklis gali būti įjungtas arba išjungtas tik tam tikru atveju, jie yra idealus mechanizmas aukštiems ir žemiems signalams, naudojamiems kvadratinės bangos signalams generuoti.
Kai paspaudžiate jungiklį, jis sukuria signalą arba vieną duomenų bitą. Įprasta nuotrauka, daryta iš išmaniojo telefono, būtų maždaug penkių megabaitų duomenų, t. y. 40 000 000 bitų. Tai reikštų, kad jums reikės paspausti jungiklį dešimtis milijonų kartų, kad gautumėte pakankamai duomenų vienai nuotraukai, darytai iš jūsų išmaniojo telefono.
Dėl mechaninių jungiklio apribojimų inžinieriams reikėjo kažko, kas neturėtų judančių dalių ir užtikrintų didesnį perjungimo greitį.
Tranzistoriai naudojami kaip jungiklis
Dėl dopingo atradimo (manipuliuojant puslaidininkių, pavyzdžiui, silicio, elektrinį laidumą), inžinieriai sugebėjo pagaminti elektra valdomus jungiklius, žinomus kaip tranzistoriai. Šis naujas išradimas leido pasiekti didesnį apdorojimo greitį, kuriam maitinti reikėjo mažai įtampos, o tai galiausiai leido sukrauti daugiau nei milijardą šių tranzistorių viename moderniame procesoriuje.
Kas yra procesoriaus architektūra?
Tada tranzistoriai yra sumaniai išdėstyti taip, kad būtų loginiai vartai, pusiau sumatoriai, sumatoriai, apverčiamieji diskai, tankintuvai, registrai ir įvairūs komponentai, dėl kurių CPU veikia. Tai, kaip šie komponentai buvo sukrauti, apibrėžia tai, kas vadinama procesoriaus architektūra.
CPU architektūra taip pat diktuoja procesoriaus ISA (instrukcijų rinkinio architektūrą). ISA turi integruotą instrukcijų sąrašą, kurį CPU gali vykdyti savaime. Tada šios instrukcijos nuosekliai sumaišomos naudojant programavimo kalbą, kad būtų sukurta programa. Paprastai CPU yra lengvai pasiekiami šimtai instrukcijų, įskaitant sudėjimą, atimtį, perkėlimą, išsaugojimą ir įkėlimą.
Štai instrukcijų rinkinio pavyzdys:
Kiekviena instrukcijų rinkinio instrukcija turi savo dvejetainį adresą, žinomą kaip opcode. Opkodas bus pirmieji keli dvejetainiai bitai, nurodantys, kurią operaciją iš instrukcijų rinkinio naudoti.
Po operacijos kodo yra operandas. Operande yra reikšmės ir adresai, kuriuose bus naudojamas opkodas.
Diagramoje parodyta 8 bitų instrukcija. Jei procesorius turi 64 bitų architektūrą, instrukcijos gali apimti iki 64 bitų komandų pločio, todėl procesorius yra pajėgesnis.
Susijęs: Kuo skiriasi RISC ir CISC procesoriai?
Asamblėjas
Dabar, kai suprantate dvejetainius signalus, galite sužinoti, kaip jūsų kompiuteris interpretuoja tokius signalus. Kaip turi būti interpretuojamas mašininis kodas, priklauso nuo asemblerio (žemo lygio programa, naudojama kodui dekoduoti ir surinkti į tinkamą dvejetainį) logikos tipo.
Pavyzdžiui, jei mūsų surinkėjas naudoja ASCII (American Standard Code for Information Interchange) standartą, mūsų surinkėjas paimtų pateiktą mašinos kodą ir interpretuotų jį taip pat, kaip iš ASCII lentelėje žemiau.
00101001 | A | 00101111 | G | 00110101 | M | 00111011 | S | 01000001 | Y |
00101010 | B | 00110000 | H | 00110110 | N | 00111100 | T | 01000010 | Z |
00101011 | C | 00110001 | aš | 00110111 | 0 | 00111101 | U | ||
00101100 | D | 00110010 | J | 00111000 | P | 00111110 | V | ||
00101101 | E | 00110011 | K | 00111001 | K | 00111111 | W | ||
00101110 | F | 00110100 | L | 00111010 | R | 0100000 | X |
Kadangi mūsų surinkėjas naudoja ASCII (8 bitų versija), kas aštuoni dvejetainiai skaičiai dvejetainėje yra interpretuojami kaip vienas simbolis. Surinkėjas paimtų šį baitą ir interpretuotų jį pagal pateiktus standartus. Pavyzdžiui, 01000001 01101001 01010100 būtų išverstas į žodį „bit“.
Asamblėjos kalbos supratimas
Assembly Language yra žmogaus skaitoma žemo lygio programavimo kalba, kuri tiesiogiai valdo procesoriaus architektūros operatyvinius kodus ir operandus.
Čia yra paprasto surinkimo kodo, naudojant anksčiau parodytą instrukcijų rinkinį, pavyzdys:
1. LODA Nr. 5
2. LODB Nr. 7
3. PRIDĖTI R3
4. STRE M12
Šis kodo blokas saugomas RAM, kol centrinis procesorius paima kiekvieną kodo eilutę po vieną.
CPU gavimo, dekodavimo ir vykdymo ciklas
CPU vykdo kodą per ciklą, žinomą kaip „Fetch“, „Decode“ ir „Execute“. Ši seka parodo, kaip CPU apdoroja kiekvieną kodo eilutę.
Paimti: CPU instrukcijų skaitiklis paima vieną komandų eilutę iš RAM, kad CPU žinotų, kokią komandą vykdyti toliau.
Dekoduoti: Assembler iššifruos žmogaus skaitomą kodo bloką ir surinks jį kaip tinkamai suformatuotą dvejetainį failą, kad kompiuteris suprastų.
1. 00010101
2. 00100111
3. 00110011
4. 01011100
Vykdyti: Tada centrinis procesorius vykdo dvejetainius failus, taikydamas operandų nurodytas instrukcijas pateiktiems operandams.
Kompiuteris bus vykdyti tai taip:
- Įkelkite pirmąjį registrą su 5
- Įkelkite antrąjį registrą su 7
- 5 + 7 = 12, išsaugokite 12 trečiajame registre
- Išsaugokite trečiojo registro reikšmę RAM adresu M12
Kompiuteris sėkmingai sudėjo du skaičius ir išsaugojo reikšmę nurodytu RAM adresu.
Puiku! Dabar jūs žinote, kaip kompiuteris vykdo kodą. Tačiau tai nesibaigia.
Einant toliau
Turėdami tinkamą aparatinę įrangą, surinkėją ir surinkimo kalbą, žmonės galėtų pakankamai lengvai vykdyti kodą. Tačiau, kadangi ir programos, ir kompiuterinė įranga tapo dar sudėtingesnė, inžinieriai ir programuotojai turėjo tai padaryti Pagalvokite apie būdą, kaip padaryti programavimą mažiau varginantį ir užtikrinti suderinamumą su įvairių tipų procesoriais architektūra. Taigi kompiliatorių ir interpretatorių kūryba.
Kas yra kompiliatorius ir vertėjas?
Kompiliatorius ir vertėjas yra vertimo programos, kurios paima šaltinio kodą (programos, sukurtos iš aukšto lygio programavimo kalbas) ir išverskite jas į asamblėjos kalbą, kurią surinkėjas iššifruos į dvejetainį.
An vertėjas paims vieną kodo eilutę ir iškart ją vykdys. Paprastai tai naudojama terminaluose, tokiuose kaip Linux Bash Shell terminalas ir Windows PowerShell terminalas. Puikiai tinka atlikti paprastas vienkartines užduotis.
Priešingai, a kompiliatorius paims kelias kodo eilutes ir sukompiliuos jas, kad sukurtų programą. Šių programų pavyzdžiai būtų „Microsoft Word“, „Photoshop“, „Google Chrome“, „Safari“ ir „Steam“.
Sukūrus kompiliatorius ir interpretatorius, buvo sukurtos aukšto lygio programavimo kalbos.
Aukšto lygio programavimo kalbos
Aukšto lygio programavimo kalbos yra bet kuri kalba po surinkimo kodo. Kai kurios iš šių kalbų, kurias galbūt žinote, yra C, Python, Java ir Swift. Dėl šių programavimo kalbų programavimas tapo lengviau skaitomas ir paprastesnis nei surinkimo kalba.
Čia yra palyginimas, kuris parodo, kaip sunkiau programuoti surinkimo metu nei naudojant aukšto lygio programavimo kalbą, pvz., Python:
Ant abiejų kodų bus spausdinama „Hello World“.
Naudodami šias programavimo kalbas, kūrėjai gali užprogramuoti žaidimus, svetaines, programas ir tvarkykles per pagrįstą laiką.
Susijęs: Python vs. Java: geriausia kalba 2022 m
Kompiuteriai gali vykdyti bet kokį kodą
Kompiuteris yra įrenginys, galintis skaityti tik dvejetainius. Šiuos dvejetainius failus gamina daugiau nei milijardas mikroskopinio dydžio tranzistorių, supakuotų procesoriaus viduje. Tranzistorių išdėstymas diktuoja procesoriaus ISA (instrukcijų rinkinio architektūrą), kuri pateikia šimtus instrukcijų, kurias CPU gali lengvai atlikti, kai per kodą iškviečiamas jo opkodas. Kūrėjai maišo ir derina šias instrukcijas nuosekliai, o tai sukuria visą programą, pvz., žaidimų variklius, žiniatinklio naršykles, programas ir tvarkykles.
CPU vykdo kodą per seką, žinomą kaip parinkimo, iššifravimo, vykdymo ciklas. Kai kodo dalis bus įkelta į RAM, CPU po vieną paims jo turinį, per surinkėją iššifruos turinį į dvejetainį ir tada vykdys kodą.
Kadangi surinkėjas gali išversti tik kodą, specialiai sukurtą procesoriaus architektūrai, kompiliatoriai ir vertėjai buvo pastatyti ant surinkėjo (panašiai kaip adapteris), kad galėtų dirbti su įvairių tipų CPU architektūra. Vertėjas paims vieną komandą ir nedelsdamas ją įvykdys. Priešingai, kompiliatorius paims visas jūsų komandas ir sukompiliuos jas į daugkartinio naudojimo programą.
Sukurtos aukšto lygio programavimo kalbos, tokios kaip Python, C ir Java, kad būtų lengviau, greičiau ir patogiau programuoti. Daugumai programuotojų nebereikia koduoti asamblėjos kalba, nes jų lengvai naudojamos aukšto lygio programavimo kalbos gali būti išverstos į surinkimo programas per kompiliatorių.
Tikimės, kad dabar geriau suprasite kompiuterių pagrindus ir kaip jie vykdo kodą.
Tai paprastas klausimas, tačiau kiekvienas retkarčiais susimąsto: kaip iš tikrųjų veikia tas priešais esantis kompiuteris?
Skaitykite toliau
- Paaiškinta technologija
- Programavimas
- Kompiuterio procesorius
- Apdorojimas
Trokšdamas sužinoti, kaip viskas veikia, Jayricas Maningas dar paauglystėje pradėjo dirbti su įvairiausiais elektroniniais ir analoginiais įrenginiais. Jis studijavo Baguio universitete, kur susipažino su kompiuterine ekspertize ir kibernetiniu saugumu. Šiuo metu jis daug studijuoja savarankiškai ir tobulina technologijas, siekdamas išsiaiškinti, kaip jos veikia ir kaip galime jas panaudoti, kad gyvenimas būtų lengvesnis (ar bent jau vėsesnis!).
Prenumeruokite mūsų naujienlaiškį
Prisijunkite prie mūsų naujienlaiškio, kad gautumėte techninių patarimų, apžvalgų, nemokamų el. knygų ir išskirtinių pasiūlymų!
Norėdami užsiprenumeruoti, spustelėkite čia