Что преобразует язык ассемблера в машинный код

Я новичок в программировании, и я начал с языка 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. Некоторые биты предназначены для кода операции, а некоторые - для операндов.

http://www.mathemainzel.info/files/x86asmref.html

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

Узнайте больше здесь

Ура!!

Ассемблерный код имеет аналогичный процесс для преобразования в объектный / машинный код, так как он запускается через нечто, называемое ассемблером (аналогично компилятору в данном примере).

Другие вопросы по тегам