Mašinski jezik – razlika između verzija

Uklonjeni sadržaj Dodani sadržaj
m Bot: popravljanje preusmjeravanja
Kolega2357 (razgovor | doprinos)
m robot kozmetičke promjene
 
Red 1:
'''Mašinski jezik''', '''strojni jezik''' ili '''mašinski kod''' ('''binarni kod, mašinac''') je sistem instrukcija i podataka koje centralni procesor u računaru neposredno izvršava.
 
Mašinski jezik je u određenu ruku primitivan programski jezik. On je takođe i najosnovnija reprezentacija, odnosno računarski programi kompajlirani i/ili asemblirani na najnižem nivou — nivou mašine (od {{Jez-engl|machine}}, ponekad neformalan izraz za uređaj, aparat, vozilo — u našem slučaju računar). Mašinski jezik se ponekad naziva nativni ({{Jez-engl|native code}}) kada se odnosi na specifičan hardver, tj. kada su delovi [[kod|koda]]a ili izrazi ovisni o platformi.
 
Računari i njihov [[mozak]] — [[procesor]]i — rade na [[Električna struja|struju]]. To su elektronski sklopovi čiji je rad zasnovan na stanjima napona; stanje s naponom i stanje (skoro) bez napona. Mašinski jezik, odnosno njegov binarni kod — sistem 1 i 0 — direktno korespondira sa naponskim stanjima u [[integralno kolo|integralnom kolu]].
Red 10:
Svaki model centralnog procesora ima sopstveni mašinski jezik ili set instrukcija. Poboljšane verzije jednog procesora ili novi modeli zasnovani na prethodnim mogu koristiti sve instrukcije svog prethodnika kao i njima dodane instrukcije.
 
Ako procesor P1 u potpunosti razume jezik procesora P2 kaže se da su P1 i P2 kompatibilni. Na primer, takozvani [[IBM|IBM]] kompatibilni računari su dobili tu odrednicu upravo zbog toga što razumeju mašinski jezik koji je kreirao IBM i zatim primenio na većinu personalnih računara.
 
Ali, čak i manje razlike kod skoro potpuno kompatibilnih procesora mogu uzrokovati drugačije efekte kada im se zadaju iste instrukcije. Ponekad će novi model izmeniti ili prekinuti instrukcije svog prethodnika a to sve čini migraciju mašinskog jezika između dva procesora težom. Pa i kada se radi istom modelu procesora, oni neće jednako raditi ni pod istim mašinskim jezikom ako su memorije u sistemima drugačije postavljene, ako se koristi drugačiji operativni sistem ili su periferne jedinice različite. Ovo je zbog toga što mašinski jezik u sebi ne sadrži informacije o konfiguraciji sistema.
Red 20:
== Programi ==
 
Računarski program je niz instrukcija koje izvršava centralni procesor. Jednostavni procesori mogu izvršavati instrukcije samo jednu za drugom dok su složeni procesori poput onih u [[super-računar|super-računarima]]ima sposobni izvršavati više instrukcija istovremeno, takozvano paralelno procesuiranje.
 
Kod izvršavanja programa instrukcije se mogu izvršavati po redosledu jedna za drugom ali i u 'skokovima', odnosno pod određenim uslovima izvršavanje po redosledu može biti prekinuto i nastavljeno na nekoj drugoj adresi po zadatom kriterijumu.
Red 30:
Mašinski jezik se često meša sa [[asemblerski jezik|asemblerskim]] jezikom. Tačno, čoveku mnogo jasniji prikaz mašinskog jezika je dat u asemblerskom jeziku ali asembler je programski jezik niskog nivoa koji mašinski jezik specifične procesorske arhitekture predstavlja u čitljivom obliku.
 
Programi napisani u asembleru se odlikuju mogućnošću slanja direktnih komandi [[procesor|procesoru]]u kao i iskorištavanju celog dijapazona računarske arhitekture. Pošto ti programi rade praktično na nivou mašinskog koda, i sa sobom nemaju pomoćne konstrukcije, generalizacije koda i za mašinu slične „nebitne“ stvari, su mnogo manji i brži od programa napisanih u nekom „konvencionalnom“ [[Programski jezik|programskom jeziku]].
 
Neke od glavnih mana takvih programa su loša čitljivost, (posebno izraženo pri velikim projektima), te kompleksnost koda i praktična nemogućnost konvertovanja istog koda na drugu procesorsku [[arhitektura|arhitekturu]]. Zbog tih mana se asembler danas koristi samo u sistemima realnog vremena i ostalim specifičnim sistemima.