Машинний код: відмінності між версіями

[перевірена версія][перевірена версія]
Вилучено вміст Додано вміст
BunykBot (обговорення | внесок)
м Впорядкування категорій впорядкування
шаблон
Рядок 1:
{{без джерел|дата=лютий 2020}}
{{Виконання програми}}
'''Маши́нний код''', '''маши́нна мова''' в [[інформатика|інформатиці]] — набір [[Команда (програмування)|команд]] (інструкцій), які виконуються безпосередньо [[Центральний процесор|центральним процесором]] комп'ютера без [[транслятор]]а. Кожен тип центрального процесора має власний машинний код. Оскільки машинний код складається повністю з [[Двійкова система числення|двійкових чисел]] ([[біт]]ів), більшість [[програміст]]ів пишуть програми на мовах програмування [[Мови програмування високого рівня|високого рівня]]. Програми, написані такими мовами, повинні транслюватися в машинний код, що здійснює [[компілятор]] або [[інтерпретатор]] програм, до того, як комп'ютер починає їх виконувати. В той час як прості процесори виконують інструкції одна за одною, [[Суперскалярність|суперскалярні]] процесори здатні виконувати декілька інструкцій одночасно.
 
Рядок 10 ⟶ 11:
Машинний код можна розглядати як примітивну [[Мова програмування|мову програмування]] або як найнижчий рівень представлення [[Компілятор|скомпільованих]] або [[Асемблер|ассембльованих]] комп'ютерних програм. Хоча цілком можливо створювати програми прямо в машинному коді, зараз цього практично ніхто не робить. Якщо потрібно написати оптимізовану програму під певний мікропроцесор то використовують переважно різні види [[Мова асемблера|мови асемблера]]. Також, якщо під рукою немає початкового коду програми на високій мові програмування, а необхідно внести певні зміни в код, зламати код і т.п. використовують [[дизасемблер]]и, програми, що перетворюють машинний код у асемблерний, який більш зрозумілий кваліфікованим спеціалістам. За допомогою дизасемблери в деяких випадках можна змінювати машинний код таким чином що непотрібна повна перекомпіляція програм. Написання коду на машинному коді і наближених до нього асемблерних мовах доволі трудомістка задача, потребує хорошого знання будови мікропроцесора та апаратних засобів. Тому переважна більшість програм пишеться мовами більш високого рівня і транслюється в машинний код [[компілятор]]ами. Існують також спеціальні [[декомпілятор]]и, які дозволяють перетворити машинний код в код на мові високого рівня.
 
Програми на [[Інтерпретована мова програмування|інтерпретованих мовах]] (таких як [[БейсикBASIC]] або [[Python]]) не транслюються в машинний код; замість цього вони або виконуються безпосередньо [[інтерпретатор]]ом мови, або транслюються у псевдокод ([[байт-код]]), який згодом виконується інтерпретатором. Самі інтерпретатори — це програми, представлені в машинному коді. Загалом виконання псевдокоду не значно повільніше за виконання машинного коду і значно швидше за виконанням інтерпретатором звичайного коду зрозумілого людині. Програми на Java зазвичай передаються на цільову машину у вигляді байт-кода, який перед виконання транслюється в машинний код «на льоту» — за допомогою [[JIT-компіляція|JIT-компіляції]].
 
== Мікрокод ==
{{main|Мікрокод}}
В деяких [[Архітектура комп'ютера|комп'ютерних архітектурах]] підтримка машинного коду реалізується ще більш низькорівневими програмами, що називаються мікропрограмами. Це дозволяє забезпечити єдиний інтерфейс машинного коду у всієї лінійки або сімейства комп'ютерів, які можуть мати значні структурні відмінності між собою, і полегшує переносперенесення програм в машинному коді між різними моделями комп'ютерів. Прикладом такого підходу є сімейство комп'ютерів [[IBM System/360]] та їх наступників: незважаючи на різні [[Комп'ютерна шина|шини]] шириною від 8 до 64 [[біт]] і вище, вони мають загальну архітектуру на рівні машинного коду (за винятком {{нп|IBM System/360 Model 20}}, що був 16-розрядним).
 
== Див. також ==