Найти тему
Умный ЛЕМУР

Что такое ассемблер? Вся информация

Оглавление

Что такое плоский ассемблер?

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

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

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

Фото: pixabay.com пользователь: blickpixel
Фото: pixabay.com пользователь: blickpixel

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

Но основное внимание в этом пакете уделяется использованию плоского ассемблера G в чистом виде.

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

Источник содержит пункты, которые включают разные заголовочные файлы в зависимости от используемого ассемблера. Когда плоский ассемблер G компилирует себя, он использует макроинструкции, поставляемые с прилагаемыми примерами программ, поскольку они реализуют инструкции и форматы x86 с синтаксисом, совместимым с плоским ассемблером.

Фото: pixabay.com пользователь: geralt
Фото: pixabay.com пользователь: geralt

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

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

Примеры программ для архитектуры x86, поставляемые в пакете, представляют собой выбранные образцы, изначально поставляемые с плоским ассемблером 1, с добавлением наборов макроинструкций, которые реализуют кодировщики команд и выходные форматтеры, необходимые для их сборки, как это делал оригинальный плоский ассемблер.

Фото: pixabay.com пользователь: Pexels
Фото: pixabay.com пользователь: Pexels

Хотя они и не являются полными, они предназначены для поощрения создания дополнительных наборов макроинструкций, которые предоставили бы больше инструкций и форматов вывода. Чтобы продемонстрировать, как могут быть реализованы наборы команд разных архитектур, есть несколько примеров программ для микроконтроллеров, 8051 и AVR.

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

Фото: pixabay.com пользователь: kalhh
Фото: pixabay.com пользователь: kalhh

Существует также пример сборки байт-кода JVM, который представляет собой преобразование образца, первоначально созданного для плоского ассемблера 1.

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

Спасибо что Вы дочитали эту статью до конца, буду рад Вашей поддержке! Ставьте лайки и подписывайтесь на канал!