Что преобразует язык ассемблера в машинный код
Я новичок в программировании, и я начал с языка C++, насколько я знаю, язык C++ преобразуется в язык ассемблера компилятором C++ (например, Visual Studio), но я попытался найти то, что преобразует язык ассемблера в машинный код для быть понятым и исполненным компьютером, но я не мог найти ответ.
Итак, вопрос в том, где и как язык ассемблера преобразуется в машинный код? это какой-то компилятор, интегрированный в ОС?
Заранее спасибо.
4 ответа
Некоторые компиляторы (например, GNU) преобразуют код C/C++ в код ассемблера. Инструмент под названием "ассемблер" преобразует ассемблерный код в машинный код, а инструмент под названием "компоновщик" соединяет несколько файлов машинного кода в один исполняемый файл (.EXE под Windows). Большинство этих компиляторов позволяют вам записать полученный ассемблерный код в файл, чтобы вы могли посмотреть на ассемблерный код или изменить его.
Ассемблер и компоновщик являются частью цепочки инструментов, что означает, что они обычно поставляются вместе с компилятором.
Однако некоторые компиляторы (например, Microsoft) напрямую преобразуют код C/C++ в машинный язык, поэтому ассемблер больше не требуется. Многие из этих компиляторов не могут создавать ассемблерный код, поэтому вы не можете записать ассемблерный код в файл.
Кстати, есть даже компиляторы (не для C/C++, а для других языков программирования), которые напрямую создают файл.EXE, поэтому компоновщик не требуется.
Когда компилятор преобразует код высокого уровня в язык ассемблера, который выглядит примерно так:
- MOV AX, [A]; # Переместите A, чтобы зарегистрировать топор
- ДОБАВИТЬ AX, [B]; # Добавить B к A
- IMUL AX; # Квадрат (A + B)
- MOV [C], AX;
Ассемблер преобразует эти инструкции по сборке в машинный код.
Инструкция по сборке имеет типичную форму, такую как: операнд операнд [операнд]
И если вы посмотрите руководство по микропроцессору, вы узнаете, как каждая инструкция может быть преобразована в двоичную форму, такую как 1001000. Некоторые биты предназначены для кода операции, а некоторые - для операндов.
Язык ассемблера преобразуется в исполняемый машинный код с помощью служебной программы, называемой ассемблером; Процесс преобразования называется сборкой или сборкой кода.
Узнайте больше здесь
Ура!!
Ассемблерный код имеет аналогичный процесс для преобразования в объектный / машинный код, так как он запускается через нечто, называемое ассемблером (аналогично компилятору в данном примере).