Ассемблер против Компилятора
В общем, компилятор - это компьютерная программа, которая читает программу, написанную на одном языке, который называется исходным языком, и переводит ее на другой язык, который называется целевым языком. Традиционно исходный язык был языком высокого уровня, таким как C ++, а целевой язык был языком низкого уровня, таким как язык ассемблера. Однако существуют компиляторы, которые могут преобразовывать исходную программу, написанную на языке ассемблера, и преобразовывать ее в машинный код или объектный код. Ассемблеры являются такими инструментами. Таким образом, как ассемблеры, так и компиляторы в конечном итоге создают код, который может быть непосредственно выполнен на машине.
Что такое компилятор?
Компилятор - это компьютерная программа, которая читает программу, написанную на одном языке, который называется исходным языком, и переводит ее на другой язык, который называется целевым языком. Чаще всего исходный язык - это язык высокого уровня, а целевой язык - язык низкого уровня. Таким образом, в целом компиляторы можно рассматривать как переводчики, которые переводят с одного языка на другой. Кроме того, компиляторы выполняют некоторые оптимизации кода. Типичный компилятор состоит из нескольких основных компонентов. Первым компонентом является сканер (также известный как лексический анализатор). Сканер читает программу и преобразует ее в строку токенов. Второй компонент - парсер. Он преобразует строку токенов в дерево разбора (или абстрактное синтаксическое дерево), которое фиксирует синтаксическую структуру программы. Следующий компонент - это семантические процедуры, которые интерпретируют семантику синтаксической структуры. За этим следует оптимизация кода и окончательная генерация кода.
Что такое ассемблер?
Ассемблер - это программное обеспечение или инструмент, который переводит язык ассемблера в машинный код. Итак, ассемблер - это тип компилятора, а исходный код написан на языке ассемблера. Сборка - это читаемый человеком язык, но обычно он имеет отношение один к одному с соответствующим машинным кодом. Поэтому говорят, что ассемблер выполняет изоморфное (однозначное отображение) преобразование. Продвинутые ассемблеры предоставляют дополнительные функции, которые поддерживают процессы разработки и отладки программ. Например, тип ассемблеров, называемый макро-ассемблерами, обеспечивает макро-средство.
В чем разница между ассемблером и компилятором?
Компилятор - это компьютерная программа, которая читает программу, написанную на одном языке, и переводит ее на другой язык, в то время как ассемблер можно рассматривать как специальный тип компилятора, который переводит только машинный код только на ассемблер. Компиляторы обычно генерируют машинный исполняемый код непосредственно из языка высокого уровня, но ассемблеры создают объектный код, который может быть связан с использованием программ компоновщика для запуска на машине. Поскольку язык ассемблера имеет однозначное соответствие с машинным кодом, ассемблер может использоваться для создания кода, который выполняется очень эффективно в тех случаях, когда производительность очень важна (например, для графических процессоров, встроенных систем с ограниченными аппаратными ресурсами по сравнению с персональным компьютером). как микроволновые печи, стиральные машины и т. д.).