Разница между компоновщиком и загрузчиком

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

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

Компоновщик против загрузчика

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

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

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

Компоновщик Загрузчик
Компоновщик генерирует исполняемый модуль исходной программы Загрузчик загружает исполняемый модуль в основную память.
Вход
Компоновщик вводит объектный код ассемблером Загрузчик принимает исполняемый модуль, имеет вход
Функция
Компоновщик объединяет все объектные модули Загрузчик выделяет адрес исполняемому файлу
Тип
Типы компоновщика: редактор ссылок и динамический редактор. Типы загрузчика — это абсолютный загрузчик, динамический загрузчик времени выполнения и перемещаемый загрузчик.

Что такое линкер?

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

Что такое загрузчик?

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

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

  1. Компоновщик генерирует исполняемый модуль исходной программы, тогда как загрузчик загружает исполняемый модуль в основную память.
  2. Компоновщик принимает входной объектный код ассемблером, тогда как загрузчик принимает исполняемый модуль, который должен ввести
  3. Компоновщик объединяет все объектные модули, а загрузчик выделяет адрес исполняемому файлу.
  4. Типы компоновщика — это редактор связей и динамический редактор, тогда как типы загрузчика — это абсолютный загрузчик, динамический загрузчик времени выполнения и перемещаемый загрузчик.