Машинный код как язык программирования. Язык ассемблера


Опубликованно 31.10.2017 01:34

Машинный код как язык программирования. Язык ассемблера

На ассемблере (или ассемблер) - это язык низкого уровня программирования для компьютера или другого программируемого оборудования, в котором существует взаимосвязь между языком и правилами в машинный код архитектуры. Каждая среда объектно-ориентированного программирования (в профессиональной терминологии — «коллекционер») относится к конкретной компьютерной архитектуры. Напротив, большинство языков программирования высокого кроссплатформенны, но требуют интерпретации или компиляции.

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

Использование

Для многих операций требуется один или несколько операндов, в состоянии построить полную инструкцию, и многие ассемблеры могут принимать выражения из чисел и констант, а также реестры и метки как операнды. Это освобождает специалист в области программирования в машинный код для трудоемких повторяющихся вычислений. В зависимости от архитектуры этих элементов также могут быть объединены, чтобы получить конкретные инструкции или режимы адресации с помощью смещения или другие данные, а также адреса фиксированные. Многие «сборщики» обеспечивают механизмы для содействия разработке программы контроля производственного процесса и поддержки отладки. С исторической точки зрения

Первый ассемблер язык программирования был разработан в 1947 году, Кэтлин Бут для ARC2 в Биркбекском лондонского университета, в процессе работы с Джоном фон Нейманом и Герман Голдстином в Институте высших исследований. SOAP (Symbolic Optimal Assembly Program) была на языке ассемблера IBM PC 650, созданный Стэном Pauly в 1955 году.

Исторически, многие программы были написаны только на ассемблере. OS пишет исключительно на этом языке до введения Берроуз MCP (1961), которая была написана на языке Executive Systems Problem-Oriented Language (ЭСПОЛ). Многие коммерческие приложения были написаны на машины-язык, ориентированный, в том числе большое количество программного обеспечения для мэйнфреймов IBM, создана ИТ-гигантов. COBOL и FORTRAN, наконец, толкнул большую часть эволюции, хотя многие большие организации сохранили ассемблерные приложения инфраструктуры в 1990-е годы.

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

Языки сборки удаляют большую часть проблем, отнимает много времени и кропотливой программирования на ассемблерах первого поколения, необходимо в первые компьютеры. Это освобождает программистов от рутины в форме запоминать коды и вычисления адресов. На начальных этапах «сборщики» были широко использованы для всех видов программирования. Однако, в конце 1980-х годов, их использование в значительной степени было вытеснено языки более высокого уровня, в поисках повышения производительности программирования. Сегодня, язык ассемблера по-прежнему используется, чтобы управлять подручными, доступ к инструкциям процессора, или для решения критических проблем с производительностью. Типичные области применения являются драйверы устройств низкого уровня, встроенных систем и параметров в режиме реального времени. Примеры применения

Типичные примеры больших программ на языке ассемблера, операционные системы IBM PC DOS, компилятор Turbo Pascal и первых приложений, таких как электронные таблицы Lotus 1-2-3.

Машина-oriented language — язык разработки для многих популярных ПК дома 1980-х и 1990-х годов (таких как MSX, Sinclair ZX Spectrum, Commodore 64, Commodore Amiga и Atari ST). Это обусловлено тем, что ре диалоги BASIC на эти системы обеспечивают скорость выполнения, а также ограниченные возможности для полного использования оборудования. Некоторые системы даже интегрированной среды разработки (IDE) разработаны средства отладки и макрообъектов. Некоторые компиляторы доступны для Радио Shack TRS-80 и его преемниками, имели возможность совместить источник сборки с программами высокого уровня. После компиляции встроенный ассемблер создал встроенный двоичный код.Машинный код для чайников. Терминология

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

Компьютерные коды команд ассемблера может также выполнять некоторые простые типы оптимизации, в зависимости от набора команд. Один из конкретных примеров того, что может быть популярным «сборщики» x86 от различных поставщиков. Большинство из них могут выполнить замену команды перехода в любое количество проходов, по запросу. Также в состоянии выполнить простую вместе или вставки инструкций, таких как коллекторы для архитектур RISC, которые могут помочь оптимизировать разумное планирование заказов, в целях обеспечения конвейера процессора.

Как и в начале языков программирования, таких как Fortran, Algol, Cobol и Lisp, коллекторы были доступны с 1950-х годов, как первое поколение текст компьютерных интерфейсов. Но, во-первых, появились сборщики, потому что это гораздо проще написать, что компиляторы высокого уровня в языки. Это связано с тем, что каждый мнемоник, а также режимы адресации и операнды инструкции распространяются в цифровой презентации каждой инструкции, без особого контекста или анализа. Также было несколько классов переводчиков и полу-автоматические генераторы кода, с помощью свойства, похожие на те, что сборок и языков высокого уровня и потока кода, может быть, является одним из наиболее известных примеров.Количество проходов

Существует два типа программирования на ассемблере, основанные на количество проходов источника (число попыток чтения), чтобы создать файл объекта.

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

Первоначальной причиной использования однопроходных сборщиков была скорость сборки — часто второй проход, просила вернуться назад и воспроизведение источника программы на ленте. Позже компьютеры с гораздо большими объемами памяти (в частности, для хранения дисков) имели пространство, чтобы выполнить все необходимое лечение, не читая. Преимущество многопроходного ассемблера заключается в том, что отсутствие ошибок приводит к тому, что процесс связывания (или загрузка программы, если ассемблер непосредственно создает исполняемый код) быстрее.Что такое двоичный код?

Программа, написанная на языке ассемблера, состоит из серии мнемонических команд процессора и мета-операторов (известных как директивы, псевдо-инструкции и псевдооперации), отзывы и данные. Инструкции языка ассемблера обычно состоят из мнемонического кода операции. Далее следует список данных, аргументов или параметров. Они передаются, что в инструкции машинного языка, которые загружаются в память и выполняется.

Например, следующий оператор указывает, что процессор x86/IA-32 перемещения 8-битное значение в реестре. Двоичный код для этой команды — 10110, последующие 3-битный идентификатор для регистр. Ид АЛЬ-000, поэтому следующий код загружает регистр AL с данными 01100001.

Возникает вопрос: что такое двоичный код? Это система кодирования с помощью двоичных цифр «0» и «1» для представления букв, цифр или других символов на компьютере или другом электронном устройстве.

Пример кода машины: 10110000 01100001.Технические характеристики

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

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

Многие игры мнемотехника или синтаксис ассемблера могут существовать и для всей команды, как правило, создается в различные программы. В этих случаях, наиболее популярный, как правило, тот, который поставляется производителем, и используется в документации.Язык проектирования

Существует большая степень разнообразия в том, как авторы сборников классифицируют заявления и спецификации, которые они используют. В частности, некоторые описывают все, что отличается от машины или мнемоника, как псевдооперацию. База словаря сборки состоит из системы управления из трех основных разновидностей инструкций, которые используются для идентификации операции:мнемонический опкода;определение данных;директива коллектора.Мнемонический опкода расширенный мнемоник

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

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

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

Существует инструкций, используемых для идентификации элементов хранения данных и переменных. Они определяют тип данных, длина и выравнивание. Эти инструкции могут также определить доступность информации для внешних программ (собирать отдельно) или только для программы, которые определены в разделе данных. Некоторые ассемблеры определяют как псевдооператоры.Директива сборки

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

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

Самодокументирующийся код

Характер ассемблеры позволяют программистам связывать произвольные имена (ключевые слова или символы) с ячейками памяти и констант. Часто, каждая величина постоянная и переменная-это имя собственное, таким образом, инструкции могут ссылаться на эти места по имени, тем самым способствуя самодокументирующему код. В коде от имени всей подпрограммы связан с точкой входа, так что вызовы подпрограмм могут использовать его имя. Внутри подпрограммы назначаются метки GOTO. Многие интеграторы поддерживают символы, которые лексически разные символы.

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

Языки ассемблера, как и большинство других языков, компьютера, позволяют добавлять комментарии в исходный код программы, который игнорируется при процессе строительства. Суждение добавление комментариев важно в программах ассемблера язык, потому что определения и выделения двоичной последовательности машинных команд трудно определить. «Брутто» (без комментариев) язык ассемблера, созданный компиляторами или дизассемблерами, довольно трудно читать, когда необходимо внести изменения.



Категория: Hi-Tech