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

Основы программирования: Исходный код

Ключевое различие — исходный код и объектный код

Программное обеспечение — это набор программ. Программа — это набор инструкций, данных компьютеру для выполнения определенной задачи. Их инструкции написаны программистом с использованием языка программирования. Следовательно, разработка программного обеспечения означает разработку набора программ. Деятельность по написанию программ известна как программирование.

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

Неделя 2. Урок 1. Алгоритмы. Псевдокод. Исходный код. Компилятор. Объектный модуль.

1. Обзор и основные отличия
2. Что такое исходный код
3. Что такое объектный код
4. Сходства между исходным кодом и объектным кодом
5. Параллельное сравнение — исходный код и объектный код в табличной форме
6. Резюме

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

Перед разработкой программного обеспечения необходимо понять требования. Аналитики получают необходимые пользователю функции и документируют их. Этот документ — Спецификация требований к системе (SRS). Он предоставляет описательную документацию о необходимых функциях. На основе этого документа спроектирована система.

Системное проектирование может быть выполнено с использованием блок-схем, диаграмм потоков данных (DFD). Результатами фазы проектирования могут быть проектирование базы данных, проектирование процесса и т. Д. После завершения этапа проектирования эти проекты могут быть реализованы программистом с использованием соответствующего языка программирования.

Языков программирования много. Некоторые из них — C, C #, C ++, C # и Python. Программист может выбрать язык программирования в соответствии с программным проектом и преобразовать дизайн в компьютерные программы. Инструкции написаны для достижения функциональных возможностей необходимого программного обеспечения с использованием языка программирования.

Эти инструкции имеют синтаксис, аналогичный английскому языку, и читаются человеком. Этот набор инструкций, написанных с использованием удобочитаемого языка программирования, называется исходным кодом.

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

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

Многомодульные программы. Межмодульные связи. Многоязыковые программы. 17 лекция

Читайте также:
Как добавить программу в меню открыть

Этот преобразованный код известен как объектный код. По компьютеру это понятно. Наконец, инструкции, данные человеком, понятны компьютеру.

В чем сходство между исходным кодом и объектным кодом?

  • Оба связаны с компьютерным программированием.

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

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

Резюме -Исходный код против объектного кода

Компьютерные программы полезны для предоставления компьютеру инструкций по выполнению определенной задачи. Эти программы написаны с использованием языков программирования. Существует много языков программирования, и программист может выбрать язык для разработки программ или программного обеспечения.

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

Загрузите PDF-файл исходного кода и объектного кода

Вы можете скачать PDF-версию этой статьи и использовать ее в автономных целях в соответствии с примечанием к цитированию. Загрузите PDF-версию здесь. Разница между исходным кодом и объектным кодом.

Источник: ru.strephonsays.com

Глава 3. Представление программ на машинном уровне

x86 — это семейство обратно совместимых архитектур набора инструкций, основанных на процессоре Intel 8086 и его варианте Intel 8088. Термин x86 появился потому, что имена нескольких преемников процессора Intel 8086 заканчиваются на 86, включая процессоры 80186, 80286, 80386 и 80486.

Intel 80386, также известный как i386 или просто 386, представляет собой 32-разрядный микропроцессор, представленный в 1985 году.

  • Для некоторых приложений программист должен перейти к ассемблерному коду, чтобы получить доступ к низкоуровневым функциям машины:
  1. Один из подходов заключается в написании целых функций на ассемблере и объединении их с функциями C на этапе компоновки.
  2. Во-вторых, использовать поддержку gcc для встраивания ассемблерного кода непосредственно в программы на C.

3.2 Кодирование программ

unix> gcc -O1 -o p p1.c p2.c

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

  • Команда gcc фактически вызывает последовательность программ для преобразования исходного кода в исполняемый код.
  1. препроцессор расширяет исходный код, включая любые файлы, указанные с помощью команд #include, и расширяет любые макросы, указанные с помощью объявлений #define.
  2. компилятор генерирует код сборки версии двух исходных файлов с именами p1.s и p2.s. c->s files
  3. ассемблер преобразует ассемблерный код в двоичные объектный кодфайлы p1.o и p2.o. s->o files
  4. Наконец, компоновщик объединяет эти два файла объектного кода вместе с кодом, реализующим библиотечные функции (например, printf), и генерирует окончательный исполняемый код файл стр. o->exe files

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

Исполняемый код — это вторая форма машинного кода — это точная форма кода, которая выполняется процессором.

Код машинного уровня

  • Компилятор выполняет большую часть работы в общей последовательности компиляции, преобразовывая программы, выраженные в относительно абстрактной модели выполнения, предоставляемой языком C, в самые элементарные инструкции, которые выполняет процессор.
  • Машинный код IA32 сильно отличается от исходного кода C. Видны части состояния процессора, которые обычно скрыты от программиста C.
  1. счетчик программ (обычно называемый «ПК» и называемый в IA32 %eip) указывает адрес в памяти следующей инструкции, которая должна быть выполнена.
  2. Целочисленный файл регистрациисодержит восемь именованных ячеек, в которых хранятся 32-битные значения. Эти регистры могут хранить адреса (соответствующие указателям C) или целочисленные данные. Некоторые регистры используются для отслеживания критических частей состояния программы, тогда как другие используются для хранения временных данных, таких как локальные переменные процедуры и значение, которое должно быть возвращено функцией.
  3. Код условия регистры содержат информацию о состоянии последней выполненной арифметической или логической инструкции. Они используются для реализации условных изменений в элементе управления или потоке данных, например, для реализации if и while заявления.
  4. Набор регистров с плавающей запятой хранит данные с плавающей запятой.
  • Хотя 32-битные адреса IA32 потенциально охватывают 4-гигабайтный диапазон адресных значений, обычная программа будет иметь доступ только к нескольким мегабайтам. Операционная система управляет этим виртуальным адресным пространством, переводя виртуальные адреса в физические адреса значений в реальной памяти процессора.
Читайте также:
Отзывы о программе Яндекс определитель номера

Примеры кода

  • Пример ассемблерного кода

sum: pushl %ebp movl %esp, %ebp movl 12(%ebp), %eax addl 8(%ebp), %eax addl %eax, accum popl %ebp ret

Большинство инструкций на ассемблере, сгенерированных gcc, имеют односимвольный суффикс, обозначающий размер операнда. movb (перемещение байта), movw (перемещение слова) и movl (перемещение двойного слова).

  • Пример объектного кода (двоичный)

55 89 e5 8b 45 0c 03 45 08 01 05 00 00 00 00 5d c3

3.3Форматы данных

  • Из-за своего происхождения как 16-битной архитектуры, которая расширилась до 32-битной, Intel использует термин «word» для обозначения 16-битного типа данных. Исходя из этого, они называют 32-битные числа «двойными словами». Они называют 64-битные числа «четверными словами». Большинство инструкций, с которыми мы столкнемся, работают с байтами или двойными словами.

3.4 Доступ к информации

  • Центральный процессор (ЦП) IA32 содержит набор из восьми регистров, в которых хранятся 32-битные значения. Эти регистры используются для хранения целочисленных данных, а также указателей.

Спецификаторы операндов

  • Большинство инструкций имеют один или несколько операндов, указывающих исходные значения, на которые следует ссылаться при выполнении операции, и место назначения, в которое следует поместить результат. Исходные значения могут быть заданы как константы или считаны из регистров или из памяти . Результаты могут быть сохранены либо в регистрах, либо в памяти.
  • Различные возможности операндов можно разделить на три типа:
  1. Немедленно для постоянных значений. Они записываются с помощью «$», за которым следует целое число.
  2. Регистр, обозначает содержимое одного из регистров. Либо один из восьми 32-битных регистров (например, %eax) для операции с двойным словом, либо один из восьми 16-битных регистров (например, %ax) для операции со словом, либо один из восьми однобайтовых регистров. элементы (например, %al) для байтовой операции.
  3. Третий тип операнда — это ссылка на память, в которой мы обращаемся к некоторой ячейке памяти в соответствии с вычисленным адресом, часто называемым эффективным адресом. Наиболее общая форма показана с синтаксисом Imm(Eb,Ei,s). Такая ссылка состоит из четырех компонентов: непосредственного смещения Imm, базового регистра Eb, индексного регистра Ei и масштабного коэффициента s, где s должен быть равен 1, 2, 4 или 8. Эффективный адрес затем вычисляется как Imm + R[Eb] + R[Ei] *s .
Читайте также:
Как установить программы на мейзу

Инструкции по перемещению данных

  • Регистровые операнды для этих инструкций могут быть любым из восьми 32-битных регистров (%eax–%ebp) для movl, любым из восьми 16-битных регистров (%ax–%bp) для movw и любым из однобайтовые элементы регистра (%ah–%bh, %al–%bl) для movb. В следующих примерах инструкций mov показаны пять возможных комбинаций исходного и целевого типов. Напомним, что исходный операнд идет первым, а целевой — вторым. См. рисунок выше.

1 movl $0x4050,%eax Immediate — Register, 4 bytes 2 movw %bp,%sp Register — Register, 2 bytes 3 movb (%edi,%ecx),%ah Memory — Register, 1 byte 4 movb $-17,(%esp) Immediate — Memory, 1 byte 5 movl %eax,-12(%ebp) Register — Memory, 4 bytes

Источник: digitrain.ru

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

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

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

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

Источник: qna.habr.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru