Машинный код как язык программирования. Язык ассемблера
Опубликованно 10.02.2018 00:37
Язык ассемблера (или assembler) - это низкоуровневый язык программирования для компьютеров или другого оборудования, программируемый, в которой существует корреляция между языком и образования, код архитектуры. Каждая машина язык (в профессиональной терминологии — «сбор») относится к конкретной архитектуры компьютера. В противном случае, в большинстве языков программирования высокого уровня, форма-опалубка, но требуют интерпретации или компиляции.
От платформы-ориентированный код может также быть назван символический язык, или набор инструкций, которые выполняются непосредственно в центральный процессор компьютера. Каждая программа выполняется процессором, состоит из серии инструкций. Машинный код, по определению, это самый низкий уровень программирования, видна программисту.
Использование
Для многих операций требуется один или несколько операндов, способен построить полную инструкцию, и многие сборщики могут принять выражения чисел и констант, а также журналы и метки как операнды. Это освобождает специалиста программировании на языке родной от скучных повторяющихся вычислений. В зависимости от архитектуры этих элементов также могут быть объединены для конкретных инструкций или режим адресации с использованием офсетной или других данных, и устанавливает адреса. Многие из «вырезок» предлагают дополнительные механизмы для облегчения разработки программы управления процессом построения и поддержки для отладки. Историческая перспектива
Первый собрать язык был разработан в 1947 году Кэтлин Бут на СМ2 в Богатый лондонский университет в процессе работы с John von Любят и Герман Судьбе в Институте перспективных исследований. SOAP (Symbolic Optimal Assembly Program) является язык ассемблера для IBM PC 650, созданный Стэном Поли в 1955 году.
Исторически многие программные решения были написаны только на ассемблере. ОПЕРАЦИОННОЙ системы они были написаны только на этом языке до введения Берроуз MCP (1961), которая была написана на языке Executive Systems Problem Oriented Language (ЭКСПОРТ). Множество коммерческих приложений были написаны на одной машине-ориентированного языка, в том числе большое количество программного обеспечения для мэйнфреймов IBM, создали IT-гигантов. COBOL и FORTRAN, наконец, вытеснили большинство разработок, хотя многие большие организации сохранили собрать прикладных инфраструктуры в 1990-х годах.
Большинство из первых на основе микроконтроллера на языке ассемблера с ручного кодирования, в том числе большинство операционных систем и крупномасштабных приложений. Это связано с тем, что эти машины имели серьезные ограничения ресурсов, загружен индивидуальной памяти и архитектуре выставки и предоставлять ограниченные услуги система с ошибками. Возможно, более важным было отсутствие комфорта высокого уровня, компиляторы языка, подходит для использования в микрокомпьютер, который сложно образование в машинный код.Область применения
Языки вместе удаляют большую часть проблем, напряженной и кропотливой программирования, собрать первого поколения, требуется как можно скорее компьютере. Это освобождает программистов от рутины в виде запоминание цифровых кодов и вычисление адресов. На начальных этапах «собиратели» были широко использованы для всех видов программирования. Тем не менее, к концу 1980-х годов, их применение в значительной степени вытеснил языки более высокого уровня, в поисках повышения производительности программирования. Сегодня на языке ассемблера также используется для прямого аппаратные манипуляции, доступ к станции инструкций процессора или для решения критических проблем производительности. Типичное приложение драйверы устройств низкого уровня интегрированных систем и параметров в режиме реального времени. Примеры применения
Типичные примеры больших программ на языке ассемблера, операционные системы IBM PC DOS, компилятор Turbo Pascal и первых приложений, как программа электронных таблиц Lotus 1-2-3.
Машина-язык — основной язык для разработки в течение многих значимых домашнего КОМПЬЮТЕРА в 1980-х и 1990-х годов (как MSX, Sinclair ZX Spectrum, Commodore 64, Commodore Amiga и Atari ST). Это связано с тем, что интерпретирует диалоги BASIC на эти системы обеспечили низкую скорость исполнения, а также ограниченные возможности для полного использования существующего оборудования. Некоторые системы имеют также интегрированная среда разработки (IDE) с передовые инструменты отладки и acrobat. Некоторые компиляторы доступны для Радио Shack TRS-80 и его преемниками, имели возможность совместить источник сборка с программами высокого уровня. После заполнения встроенный ассемблер создали встроенный в двоичном коде.Машинный код для чайников. Терминология
Программа ассемблер генерирует коды операций путем перевода из комбинации мнемонические правила и синтаксис для операции и режим адресации в их числовые эквиваленты. Это представление, как правило, включает в себя код операции, так как другие управляющие биты и данных. Ассемблер также вычисляет константные выражения и определяет символьные имена для места памяти и другие объекты.
Машины коды команд ассемблера могут также выполнять некоторые простые типы оптимизации, зависит от набора команд. Одним из примеров этого могут быть популярны «собирателей» x86 от различных поставщиков. Большинство из них могут выполнять замену команды перехода в любое количество шагов, по запросу. Также не в состоянии выполнить простую группировку или реализации инструкция, как некоторые бумажники для архитектур RISC, которые могут помочь вам оптимизировать разумное планирование команд, для максимально конвейера ПРОЦЕССОРА.
Как первый язык программирования, как Fortran, Algol, Cobol и Lisp, вырезок были доступны с 1950-х годов, как первые поколения текстовых интерфейсов. Тем не менее, в первый момент, казалось, собирателей, потому что их гораздо проще написать, что компиляторы для языков высокого уровня. Это связано с тем, что каждый мнемоник, так как режим адресации и операнды из инструкции, передаваемые в цифровых слайд-шоу для каждой инструкции, не много контекста или анализа. Был также ряд классов, переводчиков и полу-генераторы кода с аналогичными свойствами, как сборка и язык высокого уровня и на высокой скорости код, пожалуй, является одним из самых известных примеров.Количество шагов
Есть два типа программирования на ассемблере, в зависимости от количества проходов через источник (на количество попыток чтения), чтобы создать файл объекта.
Forward-only монтажники проходят через исходный код один раз. Любой символ, используемый, прежде чем его определению, требует неверная в конце кода объекта.Горизонтальные сборщики создание таблиц с все символы и их значения во-первых коридоров, а затем применить таблицу, в последующие шаги, для генерации кода.
Оригинальное использование forward-only коллекция была скорость сборки — часто второй проход требуется, чтобы вернуться назад и перечитать исходный код программы на магнитную ленту. Позже компьютер с очень большим объемом памяти (особенно для хранения дисков) имели пространство для выполнения всех работ без повторного чтения. Преимущество монотонная ассемблер является отсутствие ошибок приводит к тому, что процесс ассоциации (или скачать программу, если ассемблер создает непосредственно исполняемый код) быстрее.Что такое двоичный код?
Программа, написанная на языке ассемблера, состоит из набора команд мнемоники процессора и мета-операторов (известных как директивы, псевдо-инструкции и псевдо-операций в режиме raw), комментарии и данные. Инструкции в ассемблере, как правило, состоят из мнемоники кода операции. Затем из списка данных, аргументов или параметров. Они переведены ассемблером в инструкции машинного языка, которые загружаются в память и выполняются.
Например, следующая инструкция возвращает процессор архитектуры x86/IA-32 перемещения 8-битное значение в реестре. Двоичный код для этой команды — 10110, затем 3-битный идентификатор, для которого используется регистр. Id-это 000, таким образом, следующий код загружает В реестр данные 01100001.
Возникает вопрос: что такое двоичный код? Это система кодирования с использованием двоичных цифр «0» и «1» для представления букв, цифр или других символов, на компьютер или другое электронное устройство.
Пример машинного кода: 10110000 01100001.Технические характеристики
Преобразование в язык ассемблера в машинный код-это задача assembler. Обратный процесс выполняется с помощью дизассемблера. В отличие от языков высокого уровня не существует взаимно однозначное соответствие между множеством простых операций монтажа и инструкции машинного языка. Тем не менее, в некоторых случаях, монтаж может обеспечить без перерыва (макро). Они распространяются более чем в инструкции машинного языка, чтобы обеспечить, как правило, функцию запроса. Большинство полных собран также предоставляют богатый язык макросов, который используется поставщиками и программистов, чтобы создать более сложные коды и последовательности данных.
Каждый архитектура компьютеров имеет свой собственный язык машины. Компьютеры разные суммы и виды операций, которые поддерживают, разных размеров и количество журналов, и даже в представления данных в хранилище. В то время как большинство компьютеров общего назначения способны выполнять практически те же функции, режимы, с которой они это делают, они разные. Соответствующие языки assembler отражают эти различия.
Многие наборы мнемоник или синтаксис ассемблера могут существовать для одного набора команд, как правило, создаются в различных программах. В этих случаях наиболее популярным является, как правило то, что поставляется производителем, и используется в его документации.Язык дизайна
Есть большую степень разнообразия, которая, как авторы коллекции оценивают заявления и статьи, которые они используют. В частности, некоторые описывают все то, что отличается от машины или расширенная мнемоника, как если ты после обеда. Базовый словарный запас, чтобы компиляции состоит из системы команд — три основных типа инструкции, которые используются, чтобы определить операции, программы:мнемоника или поздно;определение данных;рекомендации по сбору.Мнемоника или поздно и расширенная мнемоника
Инструкции, написанные на языке ассемблера, элементарно, в отличие от высокого уровня языка. Как правило, мнемоника (произвольные символы) - это символ, обозначение на инструкции, исполняемый код. Каждая команда, как правило, состоит из кода операции больше нуля или более операндов. Большинство команд относятся к одно или два значения.
Расширенная мнемоника часто используется для специалист эксплуатации — инструкции-для целей, не является очевидным из названия вручную. Например, многие процессоры не имеют источника инструкции NOP, но имеют встроенные алгоритмы, которые используются для этой цели.
Многие заводчики утверждают, основные встроенные макросы, которые могут генерировать два или более машинных инструкций.Справочник данных
Есть инструкции, используемые для определения элементов, для хранения данных и переменных. Они определяют тип данных, длина и выравнивание. Эти инструкции могут также определить доступность информации для внешних программ (собираются самостоятельно) или только для программы, в которой определено поле данных. Некоторые сборщики определяют их как сесть.Директивы компиляции
Руководящие принципы сбора, называемые также если хочешь, я или если ты после обеда, я команды говорит ассемблеру, и помощь для выполнения операций, отличных от инструкция по монтажу. Директивы касаются работы ассемблер и могут повлиять на код объекта, таблицы, листинг файлов и значений параметров внутри ассемблера. Иногда термин псевдо-код предназначен для руководящих принципов, которые генерируют объектный код.
Имена, если ты после обеда часто начинаются с точки, чтобы быть отличается от инструкции на машинном языке. Другие общяя польза если ты после обеда это резерв места хранения для данных времени выполнения, и, возможно, начало их содержание до известных значений.
Я против кода
Характер ассемблеры позволяют программистам общаться произвольные имена (метки или символы) с ячейками памяти и различных констант. Часто, каждый постоянной и переменной присваивается имя собственное, так что инструкции могут ссылаться на эти положения, чтобы имя, помогая, таким образом, самодокументирующему код. В коде имя любой процедуры в связи с ее точкой доступа, так что все вызовы подпрограмм могут использовать его имя. Внутри процедуры назначаются метки, GOTO. Многие заводчики утверждают, локальные символы, которые лексически отличается от обычных людей.
Сборщики типа NASM обеспечивают гибкое управление символы, позволяя программистам управлять различными пространствами имен, автоматически рассчитать смещение в структурах данных и назначить ярлыки, которые ссылаются на литералы или в результате простых вычислений, выполненных ассемблером. Этикетки могут быть также использованы для инициализации константы и переменные мебели с адресами.
Язык ассемблера, как и большинство других языков, компьютера, позволяют добавлять комментарии к исходному коду программы, которые будут пропущены во время процесса сборки. Доказательства комментарий очень важно в программах должен быть указан язык, поскольку определение и назначение двоичной последовательности инструкций на языке машины трудно определить. «Необработанный» (без комментариев) язык ассемблера, созданный компилятором, или взять их на работу, довольно трудно читать, когда необходимо внести изменения.
Категория: обо всём