Makina-lengoaia

PZUentzat guztiz internoa eta programatzaileentzat iragangaitza den kodearentzat, ikus mikrokode

Makina-lengoaia makina-kodea idazteko erabiltzen den lengoaia da. Makina-kodea konputagailu-programa bat da, zuzenean prozesatzeko unitate zentralean (PUZean) exekuta daitekena. Agindu bakoitzarekin PUZak eragiketa jakin bat exekutatuko du; adibidez, load bat, jauzi bat edo unitate aritmetiko-logikoaren eragiketa bat, erregisto edo memoriako informazio-unitate batean.

Makina-kodea guztiz zenbakizkoa da, ahal den azkarren exekuta dadin prestatua; eta honako hauen maila baxueneko irudikapen gisa ikus daiteke: konpilatu edo mihiztatutako konputagailu-programarena, edo primitiboa eta hardwarearen mendekoa den programazio-lengoaiarena. Konputagailu-programak zuzenean idatz daitezke makina-lengoaian, baina lan unagarria da, eta erraza da erroreak gauzatzea bit bakoitza eta zenbakizko helbideak eta konstanteak eskuz kalkulatu behar direnean. Horregatik, orokorrean, programak ez dira zuzenean makina-lengoaian idazten, baina lengoaia hori bai erabil daitekeela behe-mailako arazketan, programen adabatzeetan, eta mihiztadura-lengoaiaren desmuntatzean.

Goi-mailako lengoaia, mihiztadura-lengoaia vs. makina-lengoaia 
Gaur egun, goi-mailako lengoaia edo mihiztadura-lengoaian idazten dira konputagailu-programak. Ondoren, iturburu-kodea exekutagarria den makina-kodera eraldatzen da, konpiladore, mihiztatzaile edo estekatzaile baten laguntzaz; programa interpretatuak salbu, ez baitira makina-kodera eraldatzen. Hala eta guztiz ere, iturburu-kodeko aginduak banan-banan gauzatzen dituen interpretatzailea bera, exekutatzaile gisa ikus daitekeena, zuzenean exekutagarria den makina-kodea izan ohi da (goi-mailako edo mihiztadura-lengoaian idatzitako iturburu-kode batetik sortua).

Makina-kodea, definizioz, programatzailearentzat ikusgarria den maila baxueneko programazio-xehetasuna da, baina, barnean, prozesu askok mikrokodea erabiltzen dute, edo makina-kodea mikro-operazioen segidetara eraldatzen. Teknika horiek erabiltzen badira, sortutako kodea ez da makina-kodetzat jotzen.

Agindu-multzoa 
Mikroprozesadore edo mikroprozesadore-familia bakoitzak bere agindu multzoa dauka. Aginduak bit-segidak dira, diseinu fisikoari esker makinako komando jakin batekin bat datozenak. Agindu multzoa, beraz, berariazkoa da, normalean, arkitektura bereko mikroprozesadore klase bakoitzarentzat.

Ondorengo mikroprozesadore edo prozesadore eratorrien diseinuek, orokorrean, aurrekoren baten agindu guztiak bereganatzen dituzte, batzuetan agindu berriak gehitzeaz gain. Noizean behin, ondorengo diseinu batek jatorrizko aginduren bat ezabatuko du, edo horren esanahia aldatuko (helburu berri baterako behar delako), eta kodearen bateragarritasuna deuseztatuko du. Batzuetan, ia guztiz bateragarriak diren prozesadoreek jatorrizko agindu batzuekiko portaera zertxobait desberdina daukate, baina orokorrean hori ez da arazo.

Sistemek beste xehetasunetan ere desberdintasunak eduki ditzakete: memoriaren antolaketan, sistema eragilean edo periferikoetan, besteak beste. Konputagailu-programak faktore horien menpe daudenez, sistema desberdinetan exekutatzen den makina-kodea desberdina izango da, nahiz eta mota bereko mikroprozesagailua erabili.

Mikroprozesagailu baten agindu multzoko agindu guztiak luzera berekoak izan daitezke, edo luzera aldakorrekoak. Segiden antolaketa oso desberdina da arkitektura jakin bakoitzarentzat, eta baita agindu motarentzat ere.

Agindu gehienek atal bat edo gehiago dituzte, agindu mota (aritmetikoa, logikoa, jauzia, etab.) eta aginduaren eragiketa bera (batuketa edo erkaketa, adibidez) adierazteko. Gainera, beste zati batzuei esker informazio gehiago adierazten da: eragigai mota, helbideratze-modua, helbideratzearen orekatzea edo indexazioa, eta eragigaiaren balioa bera (agindu batean horrelako eragigaiak aurkitzen direnean berehalakoak deitzen dira).

Erreferentziak

Ikus, gainera 

 Konputagailu
 Konputagailuen arkitektura

Kanpo estekak 

 Makina-lengoaia Laneki hiztegian
 Lengoaia Harluxet entziklopedian

Informatika
Programazioa