Что такое объектный код
Перейти к содержимому

Что такое объектный код

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

В С++. Опишите максимально чётко, в чём разница между этими тремя понятиями. Примеры — приветствуются.

  • Вопрос задан более трёх лет назад
  • 13703 просмотра

1 комментарий

Простой 1 комментарий

longclaps

Жирно, очень ЖИРНО.
Решения вопроса 1

Исходный код или исходный текст — текст на языке программирования, который пишет человек (как правило, человек). Это обычный текстовый файл (как правило).

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

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

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

Пример исходного кода — легко:

package example func Add(p int) int

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

Это для вас будет выглядеть как абракадабра.

! __.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 ничего похожего на машинный код не генерят.

Исходный и объектный код.
В чем разница?

Термины «исходный код» и «объектный код» довольно часто встречаются в мире программирования и веб-дизайна. В этой статье мы постараемся разобраться в этих терминах, а также объясним контекст, в котором они используются.

Что такое исходный код

Исходный код — это набор инструкций или команд, который может быть прочитан человеком. Грубо говоря — это обычный текстовый файл.

После создания исходного кода он сохраняется в файле в соответствии с его расширением. Например, файл JavaScript сохраняется с расширением «.js», а файл C++ — с расширением «.cpp». Переводчик языка получает исходный код, а затем преобразует его в машинный код, который по другому называется объектным кодом.

Для эффективной разработки программы исходный код пишется либо на ассемблере, либо на высокоуровневом языке программирования.

Язык ассемблера — это машинно-ориентированный язык, который требует специальных знаний для его расшифровки. В высокоуровневых языках программирования в качестве инструкций используются английские и математические символы, а также языки — C, C++, Java, Python, JavaScript.

Как используется исходный код

Исходный код написан простым текстом, который хорошо понятен людям. Исходный код любого веб-сайта найти несложно — достаточно щелкнуть правой кнопкой мыши на любой веб-странице и перейти к пункту «Просмотреть исходный код страницы».

Вам откроется новая вкладка с исходным кодом. Вот так выглядит исходный код главной страницы интернет-агентства Binn . Исходный код с этой веб-страницы написан в текстовом формате и может быть прочитан как обычными людьми, так и программистами.

Что такое объектный код

Объектный код представляет собой компьютерный числовой код, который состоит из двоичных чисел, таких как 0 и 1, и может быть распознан только компьютером. Грубо говоря, объектный код — это промежуточное представление кода, то есть еще не машинный, но уже не исходный.

Объектный код обычно используется на этапе сборки программы. Это вывод исходного кода после компиляции. Объектный код остается в объектном файле — COM, COFF (общий формат объектных файлов). Объектный код, машинный код и двоичный код могут использоваться взаимозаменяемо.

Как используется объектный код

Объектный код обычно включает интерпретированную или скомпилированную программируемую логику, встроенное ПО и различные библиотеки.

Объектный код генерируется компилятором, который считывает исходные инструкции компьютерного языка более высокого уровня, а затем переводит их в эквивалентные инструкции машинного языка. Визуально объектный код выглядит следующим образом:

Объектный код написан с помощью нулей и единиц, и его сложно прочитать людям, для его чтения необходим компьютер.

Компиляция исходного код в объектный

Компилятор преобразует удобочитаемый код в объектный (или машинный) код. У каждого высокоуровневого языка программирования есть свой собственный компилятор, который преобразует код в язык, понятный машине. Визуально процесс разработки ПО может выглядеть примерно так:

Исходный код и объектный код можно рассматривать как версии до и после компьютерного программирования. Рассмотрим этапы:

  1. Программист, который использует типы языка Java в нужной последовательности, сохраняет их, изменяя наименование так, чтобы оно содержало исходный код.
  2. После этого файл готов к компиляции и проходит через компилятор Java.
  3. Полученный результат (скомпилированный файл) называется объектным кодом.
  4. Объектный код содержит последовательность инструкций, которые понятны процессору, но трудны для понимания человеком.

Разница между исходным и объектным кодом

Теперь, когда у нас есть общее представление об исходном и объектном коде, мы можем сформулировать основное различие между этими двумя терминами.

Если коротко, то исходный код — это набор инструкций, который написан с использованием языка программирования, а объектный код — это результат исходного кода после обработки компилятором.

Исходный код против объектного кода

Исходный код создает объектный код, и чтобы создать приложение, которое в дальнейшем можно распространить, объектный код создает исполняемый файл, который доступен для любых пользователей.

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

Объектный код программы

«. 94) объектный код — подлежащая исполнению форма подходящего представления одного или более процессов (текст программы или язык программы), которая компилируется программирующей системой (категория 9);. «

Приказ ФТС России от 27.03.2012 N 575 (ред. от 30.10.2012) «О контроле за экспортом товаров и технологий двойного назначения, которые могут быть использованы при создании вооружений и военной техники и в отношении которых осуществляется экспортный контроль»

Официальная терминология . Академик.ру . 2012 .

  • Объектная смета
  • Объектный сметный расчет

Смотреть что такое «Объектный код программы» в других словарях:

  • объектный код — 3.31 объектный код: Представление компьютерной программы на низком уровне, обычно не в форме, непосредственно пригодной для объектного компьютера, а в форме, включающей в себя, помимо информации о процессорных командах, информацию о размещении… … Словарь-справочник терминов нормативно-технической документации
  • ОБЪЕКТНЫЙ КОД — подлежащая исполнению форма подходящего представления одного или более процессов (текст программы или язык программы), которая преобразована программирующей системой … Словарь понятий и терминов, сформулированных в нормативных документах российского законодательства
  • Код (компьютер) — Исходный код, написанный на JavaScript Исходный код (также исходный текст) текст компьютерной программы на каком либо языке программирования. В обобщённом смысле любые входные данные для транслятора. Исходный код либо транслируется в… … Википедия
  • код — 01.01.14 код [ code]: Совокупность правил, с помощью которых устанавливается соответствие элементов одного набора элементам другого набора. [ИСО/МЭК 2382 4, 04.02.01] Источник … Словарь-справочник терминов нормативно-технической документации
  • Объектный модуль — (также объектный файл, англ. object file) файл с промежуточным представлением отдельного модуля программы, полученный в результате обработки исходного кода компилятором. Объектный файл содержит в себе особым образом подготовленный код (часто … Википедия
  • Объектный файл — Обьектный модуль (также объектный файл, англ. object file) файл с промежуточным представлением отдельного модуля программы, полученный в результате обработки исходного кода компилятором. Объектный файл содержит в себе особым образом… … Википедия
  • Объектный Си — Objective C Класс языка: объектно ориентированный, мультипарадигмальный: рефлексивно ориентированный Появился в: 1986 г. Автор(ы): Типизация данных: строгая полиморфная, статическая Основные реализации: Apple gcc Испытал … Википедия
  • Исходный код — У этого термина существуют и другие значения, см. Исходный код (фильм). Исходный код HTML страницы со вставкой на языке JavaScript Исходный код (также исходный текст) текст компьютерной программы на каком либо языке программирования или… … Википедия
  • Программный код — Исходный код, написанный на JavaScript Исходный код (также исходный текст) текст компьютерной программы на каком либо языке программирования. В обобщённом смысле любые входные данные для транслятора. Исходный код либо транслируется в… … Википедия
  • ТЕКСТ ПРОГРАММЫ (ИЛИ ИСХОДНЫЙ ЯЗЫК) — соответствующее представление одного или более процессов, которые могут быть преобразованы программирующей системой в форму, исполняемую оборудованием (объектный код или объектный язык) … Словарь понятий и терминов, сформулированных в нормативных документах российского законодательства

В чем разница объектного кода от байт-кода

В C# нет ярко выделенного процесса компоновки. Компилятор проходится по файлам, собирая типы в отдельную сборку. Тут нет классической C компоновки.

28 июл 2020 в 14:55

Еще прочитал на википедии ,что динамическая библиотека это файл с машинным кодом,а статическая с объектным,если со статической более менее понятно,что это связано с компоновкой, то с динамической нет,разве это не выходит,что динамическая библиотека написана по определенную систему или архитектуру?

28 июл 2020 в 14:55

dll, exe содержат машинный код. промежуточный код компилируется JIT в машинный код, т. е. C# -> CIL -> Native.

28 июл 2020 в 14:59

ДА! именно под систему и архитектуру! в .NET Framwwork в заголовке файла есть спец. поля для CLR, в .NET Core компиляция так же идёт под каждую систему, только там код сам по себе кросс-платформенный, т. е. код на C# .NET Core может компилироваться где угодно (в пределах Windows, MacOS, Linux)

28 июл 2020 в 15:19

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Как такового «объектного кода», как отдельный вид кода, не существует. Есть понятие объектные файлы — это файлы, получаемые при компиляции кода на С/С++/ASM и других языках с компиляцией в машинный код. Например, для Visual C++ эти файлы имеют расширение .obj. Но эти файлы содержат обычный машинный код целевой архитектуры, с единственной разницей, что некоторые адреса функций и переменных в них помечены как неопределенные, и должны позднее заменяться компоновщиком на реальные адреса.

Но в .NET настоящие объектные файлы не применяются. Файлы .netmodule хоть и похожи на них, но все же по структуре радикально отличаются (они представляют из себя почти полноценный PE файл, отличаясь от скомпонованной сборки только отсутствием раздела .assembly в манифесте). Их можно скормить компоновщику Visual C++ (в том числе совместно с настоящими .obj-файлами! Тогда полученная сборка будет смешанной, то есть содержащей и CIL-байткод, и машинный код), но это применяется только в особых случаях. При традиционной сборке C#/VB приложений компоновка не используется. На выходе компилятора сразу получается исполняемый файл, содержащий только CIL-байткод.

Отслеживать
ответ дан 30 июл 2020 в 6:58
MSDN.WhiteKnight MSDN.WhiteKnight
20.2k 6 6 золотых знаков 37 37 серебряных знаков 81 81 бронзовый знак

  • c#
  • .net
    Важное на Мете
Связанные
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.29.1725

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *