Masinkood
| See artikkel vajab toimetamist. Lisainfot võib leiduda arutelulehel. Palun aita artiklit toimetada. |
Masinkood ehk masinkeel ehk masinakeel on programmeerimiskeel, mis on arvuti protsessorile otseselt arusaadav. Masinkood ei ole inimestele kergesti loetav, kuid mõnel juhul on seda võimalik loetavaks teha dekompilaatori või disassembleri abil. Teistes programmeerimiskeeltes kirjutatud programmid kas tõlgitakse masinkoodi või käivitatakse masinkoodis kirjutatud interpretaatori abil, otse kirjutatakse masinkoodi erandjuhtudel.
Tehniline seletus [muuda]
Kuigi masinakood võib tunduda sarnasena assemblerkeelele, on need siiski erinevad keeled. Assembleri lähtekood koosneb nii kahendkoodist kui ka protsessori masinakäskude mnemokoodidest, kuid masinakood koosneb ainult numbritest 0 ja 1. Igal protsessori tüübil on oma masinakeel, kuigi see sageli suuresti kattub. Kui protsessor A mõistab täielikult protsessori B masinkoodi, öeldakse, et A ühildub ehk on kompatiibel (compatible) B-ga. Seejuures B ei pruugi ühilduda A-ga, A võib teada koode, mida B ei tea. Samuti võivad kaks protsessorit ühilduda kolmandaga, aga mitte omavahel. Protsessoriga ühilduv assembler on assembler, mis tõlgib assemblerkeeles programmi protsessori masinakeelde ehk masinakoodi.
Masinakoodi ehk masinakeele "sõnade" teiseks nimetuseks on masinakäsud ehk instruktsioonid. Assemblerkeelne või masinkoodis arvutiprogramm pole muud kui pikk nimekiri üksikutest masinakäskudest, mida protsessor täidab. Vanemad protsessorid täitsid masinakäske ainult jadamisi, kuid osa tänapäevaseid protsessoreid suudab täita ka mitut käsku samaaegselt, seega kiiremini. Programmi masinakoodi ei pruugi protsessor täita järjestikku, vaid võib käskude täitmisel hüpata vastavalt programmile ühest kohast teise vastavalt täidetavas programmis olevate siirdekäskudele (jump ehk goto, call, return) või vastavalt sündmustele (välisseadmetelt saadud katkestussignaalide järgi).
Protsessorite arhitektuurid ja masinakäsud [muuda]
Mõnes masinakeeles on kõik käsukoodid alati võrdse bittide arvuga, mõnes mitte. RISC-protsessorite arhitektuuris on käsukoodid alati ühe pikkusega, CISC-protsessoritel käsukoodide pikkus varieerub. Samas on tänapäeval enamus CISC-protsessoreid sisemiselt RISC-arhitektuuriga: kuigi programmid annavad neile CISC käske, transleeritakse need protsessoris RISC-käskudeks. Sellised on näiteks alates Pentium 2 seeria protsessorid. Väliselt on protsessorid CISC-tüüpi tagasiühilduvuse ehk kompatiibluse saavutamiseks vanemate protsessoritega.
- x86 – Inteli algatatud protsessorite arhitektuur, millest arenenud:
-
- 286 – ?
- 386 – ?
- 486 – ?
- 586 – Inteli Pentium MMX,I. AMD K6
- 686 – Inteli Pentium II,III,IV ja Celeron. AMD Athlon XP, Duron
- x86_64 – x86 64bitine edasiarendus
- amd64 – AMD haru
- ia64 – Inteli haru
- ppc – Ehk PowerPC, Macintoshides kasutatav protsessor
- arm – Pihuarvutites kasutatav protsessori tüüp