@sirius_fantom

Исходный, Машинный и Объектный коды — Разница?

В С++. Опишите максимально чётко, в чём разница между этими тремя понятиями. Примеры - приветствуются.
  • Вопрос задан
  • 15607 просмотров
Решения вопроса 1
@stul5tul
Исходный код или исходный текст - текст на языке программирования, который пишет человек (как правило, человек). Это обычный текстовый файл (как правило).

Но процессоры в компьютера/смартфонах и пр. - довольно тупые устройства, способные понимать только чрезвычайно простой машинный код.
Поэтому любая программа прямо или косвенно превращается из исходного кода в машинный и только после этого исполняется компьютером/смартфоном и пр.

Объектный код - это промежуточное представление кода. Еще не машинный, но уже не исходный. Используется на этапе сборки программы из нескольких кусков (возможно, написанных в исходном коде разными людьми и в разное время).

Машинный код - уже готов для исполнения. То есть просто берете его, ничего не нужно более. Делаете двойной щелчок мыши, к примеру, и программа запускается.

Пример исходного кода - легко:
package example

func Add(p int) int {
   return p + p
}


Пример объектного кода и машинного кода - бессмысленен. Что объектный, что машинный коды этой программы
не предназначены для чтения человеком.

Это для вас будет выглядеть как абракадабра.
!<arch>
__.PKGDEF       0           0     0     644     30328     `
go object windows 386 go1.11 X:framepointer
build id "ZKpaYf_Flzmm6jns9NJp/RbNW-F32vdlI8SgqpfEX"
----


$$B
i

И это еще не весь объектный код - там большой файл.

Машинный код - еще бОльшая абракадабра, я его сюда даже вставить не смог. Текстовый редактор не пропускает эту кучу спецсимволов и т.п.

Упомянутая вами цепочка (исходный - объектный - машинный) касается языков программирования, компилируемых в машинный код:
C/С++/Go/Rust/Pascal.

Некоторые языки предназначены для компиляции в байт-код. Его нельзя назвать ни машинный ни объектным. Это Java/Kotlin/C#. Если бы этот код выполнялся непосредственно процессором (CPU) его можно было бы назвать машинным. Но он выполняется только через специальную программу.

Языки Ruby/Python/JavaScript ничего похожего на машинный код не генерят.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Исходный - исходный текст программы
Объектный - промежуточные модули для сборки и компоновки в машинный код
Машинный - собранные объектные в исполняемые инструкции
220px-Linker.svg.png
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы