From Wikipedia, the free encyclopedia
Masinakeel (ka masinkeel, masinkood, masinakood) on programmeerimiskeel, mis on arvuti protsessorile otseselt arusaadav.
See artikkel vajab toimetamist. (Aprill 2006) |
See artikkel ootab keeletoimetamist. (Detsember 2017) |
Masinakeel 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 masinakeelde või käivitatakse masinakeeles kirjutatud interpretaatori abil, otse masinakeeles programmeeritakse erandjuhtudel.
Tavaliselt töötleb masinakeelt masin (näiteks mikroprotsessor), kuid seda võidakse töödelda ka tarkvaraliselt mõnel teisel, mitteühilduval protsessoril emulaatori abil. Spetsiaalselt masinakeeleinterpretaatori (baitkoodi virtuaalmasina) loodud "masinkoodi" nimetatakse baitkoodiks (vt Java baitkood).
Kuigi masinakood võib tunduda sarnasena assemblerkeelega, on need siiski erinevad keeled. Assemblerkeelne lähtekood koosneb protsessori masinakäskude mnemokoodidest ja kahendsüsteemi teisendatavatest operandidest, aga masinakood koosneb ainult kahendarvudest.
Igal protsessori tüübil on oma masinakeel, mis võib teiste tüüpidega osaliselt kattuda. Kui protsessor A mõistab täielikult protsessori B masinakeelt, öeldakse, et A on B-ga ühilduv. 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.
Masinakeele "sõnu" nimetatakse masinakäskudeks. Assemblerkeelne või masinkoodis arvutiprogramm on pikk nimekiri 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 ühest kohast teise vastavalt täidetavas programmis olevatele siirdekäskudele või vastavalt sündmustele (välisseadmetelt saadud katkestussignaalide järgi).
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. Tänapäeval on enamik CISC-protsessoreid sisemiselt RISC-arhitektuuriga: kuigi programmid annavad neile CISC-käske, transleeritakse need protsessoris RISC-käskudeks. Sellised on näiteks Pentium 2 seeria protsessorid. Väliselt on protsessorid CISC-tüüpi tagasiühilduvuse saavutamiseks vanemate protsessoritega.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.