Разница между ассемблером и компилятором

Главное отличие

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

Ассемблер против компилятора

Два термина, которые играют наиболее важную роль в выполнении программы, — это компилятор и ассемблер. Задача компилятора — взять предварительно обработанный исходный код и преобразовать его в код сборки. Затем задача ассемблера — взять ассемблерный код из компилятора и преобразовать его в машинный код. Если говорить об основном различии, то основное различие между ассемблером и компилятором состоит в том, что компилятор принимает исходный код и переводит его в код сборки, тогда как ассемблер принимает код сборки, сгенерированный компилятором, и переводит его в машинный код. Программа, написанная на исходном языке, читается компилятором. Компилятор — это компьютерная программа, которая переводит исходный код на язык ассемблера, и этот код языка ассемблера отправляется ассемблеру. Существуют типы компиляторов, такие как однопроходный компилятор, многопроходный компилятор, компилятор load and go и компилятор отладки и оптимизации. Ассемблер берет ассемблерный код, сгенерированный компилятором, и переводит его в машинный код. Основная задача ассемблера — принять данные в качестве входных и сформировать перемещаемый машинный код. Доступен компилятор, который выполняет задачу ассемблера и напрямую генерирует машинный код, но это не означает, что мы не можем изучать функции ассемблера. Между ассемблерным кодом и машинным кодом существует большая разница. Все эти разные типы компиляторов выполняют разные функции и различаются по принципу работы. Ассемблерный код — это мнемоническая версия машинного кода, тогда как машинный код использует двоичные коды для представления операций адреса памяти. Два прохода — это предварительная форма в ассемблере, первый проход, который идентифицирует код сборки и сохраняет этот код в таблице символов, а затем второй проход, который снова сканирует код и выполняет операции с кодом. Есть два шага, на которых выполняется компиляция, один шаг — это часть анализа, в которой исходный код разбивается на части и выполняется промежуточное представление. В части синтеза целевой код формирует промежуточное представление. В состав компилятора входят лексический анализатор, синтаксический анализатор, семантический анализатор, генерация промежуточного кода, оптимизатор кода, генератор кода, таблица символов и обработчик ошибок.

Сравнительная таблица

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

Что такое компилятор?

Программа, написанная на исходном языке, читается компилятором. Компилятор — это компьютерная программа, которая переводит исходный код на язык ассемблера, и этот код языка ассемблера отправляется ассемблеру. Существуют типы компиляторов, такие как однопроходный компилятор, многопроходный компилятор, компилятор load and go и компилятор отладки и оптимизации. Все эти разные типы компиляторов выполняют разные функции и различаются по принципу работы. Есть два этапа, на которых выполняется компиляция. Один этап — это часть анализа, в которой исходный код разбивается на части и выполняется промежуточное представление. В части синтеза целевой код формирует промежуточное представление. Есть фазы компилятора, которые включают лексический анализатор, синтаксический анализатор, семантический анализатор, генерирует промежуточный код,

Ассемблер и компилятор — это не одни и те же процессы, но они выполняют одну и ту же работу: они генерируют объектный код исходной программы и передают его компоновщику. Основной процесс компоновщика — взять объектный код и сгенерировать исполняемый код для программы после того, как эта работа компоновщика будет завершена, и он назначает код загрузчику. Есть несколько встроенных библиотек и файлов заголовков на языке высокого уровня. Есть некоторые библиотечные функции, которые определены во встроенных библиотеках. Эти функции связаны с библиотечной функцией компоновщиком. Компилятор информируется в случае, если библиотечная функция не найдена для конкретной функции. Когда есть большая программа, она делится на более мелкие программы, известные как модули. Объектные модули генерируются, когда эти модули скомпилированы или собраны. Линкер должен объединить всю программу вместе. Существует два типа компоновщика: один — редактор компоновки, который генерирует перемещенный исполняемый модуль, а другой — динамический компоновщик, связывающий внешние модули до тех пор, пока не будет сгенерирован загрузочный модуль. Программа, которую необходимо выполнить, находится в основной памяти. Загрузчик, загрузите исполняемый файл в операционную систему. Загрузчик выделяет пространство памяти исполняемому модулю в основной памяти. Существует три типа загрузчиков: абсолютный загрузчик, перемещаемый загрузчик и динамическая загрузка во время выполнения. У этих трех загрузчиков есть разные подходы к загрузке, которые включают подход абсолютной загрузки, подход перемещаемой загрузки и подход динамической загрузки во время выполнения. Абсолютный загрузчик загружает исполняемый файл программы в то же место основной памяти. В абсолютном загрузчике программист должен знать о назначении. Перемещение загрузчика компилирует или собирает фактический адрес основной памяти. Динамический загрузчик времени выполнения, программа с абсолютной памятью генерируется при выполнении инструкции.

Что такое Ассемблер?

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

Ключевые отличия

  1. Ассемблер — это компьютерная программа, которая берет ассемблерный код, сгенерированный компилятором, и переводит его в машинный код, тогда как компилятор — это компьютерная программа, которая берет исходный код и переводит его в ассемблерный код.
  2. Ассемблер вводит код языка ассемблера, тогда как исходный код компилятора вводит.
  3. Фазы ассемблера являются первой фазой и второй фазой , Фазы компилятора являются лексическим анализатор, анализатор синтаксиса, семантический анализатор, промежуточный код генерируется, оптимизатор кода, генератор кода, таблица символов, и обработчик ошибок.
  4. Вывод ассемблера — это двоичный код, тогда как вывод компилятора — мнемоническая версия кода.