Форматы команд машинного языка
Команда центрального процессора состоит из кода операции и одного или нескольких операндов (объектов (адреса ячеек памяти, чисел), над которыми совершается операция). В зависимости от числа операндов, команды делятся на безадресные (не имеющие операндов или имеющие неявно указанные), одноадресные (производящие операцию над одним объектом или одним явно и одним или несколькими неявно указанными), двух- и трехадресные.
Примеры:
INC x - одноадресная команда с одним операндом (INCrement, добавить к операнду 1 и сохранить результат по тому же адресу);
ADD x, у, z - трехадресная команда (сложить х и у и поместить результат в z).
Одноадресные системы команд обычно используют в качестве неявно заданного операнда выделенный регистр, так называемый аккумулятор, или стек.
Примечание! Шире всего стековая архитектура распространена в байт-кодах или, как это еще называют, системах команд виртуальных машин. Байт-код - это промежуточное представление программы, используемое интерпретатором, чтобы избежать лексического и синтаксического анализа программы на этапе исполнения. Исполнение байт-кода осуществляется не процессором, а программой-интерпретатором. Таким образом, реализуются многие современные языки программирования — многочисленные диалекты языка BASIC, Lisp, SmallTalk, Fort (этот язык любопытен тем, что сам имеет стековый синтаксис), наконец Java. Например, компиляция с помощью виртуальной Java-машины позволяет исполнять один и тот же код на разнообразных процессорах без потерь (или почти без потерь) скорости.
2. Языки высокого уровня – языки, в которых сложные последовательности кодов машинных операций заменены – операторами. Представлены классами:
2.1. Алгоритмические языки (algorithmic language) – языки аппаратно-независимые и отражающие структуру алгоритма (первые версии таких языков как Паскаль (Pascal), Бейсик (Basic), Си (C), Фортран (Fortran) и др.).
2.2. Процедурно-ориентированные языки (procedure-oriented language) – языки программирования, реализующие структурное программирование (Турбо Паскаль 3.0, 4.0, 5.0, 5.5, Бейсик, Си, Си +, Фортран, Connex Script (для Mat LAB) и др.).
2.3. Объектно-ориентированные языки (языки, поддерживающие объектно-ориентированное программирование Турбо Паскаль 6.0, 7.0, Объектный Паскаль (Object Pascal) для Delphi, Бейсик, объектно-ориентированный язык Ява (Java) и др.)
2.4. Проблемно-ориентированные языки (universal programming language) – языки программирования для решения задач определенного типа (язык символьной математики MathCAD , язык Гипертекстовой разметки документа (html, xml), СИМУЛА, язык обработки списков (символьный язык) – Lisp, (используется для логического моделирования), объектно-ориентированные языки, используемые для логического моделирования - CLIPS, PROLOG, алгоритмический язык Ada (используется в авиа-моделировании) и др.)
2.5. Реляционные языки – предназначены главным образом для систем управления базами данных СУБД (системы управления базами данных - dBASE, Paradox, FoxPro, Clipper и др.). Такие языки бывают трех типов:
dBASe – приближены к языкам структурного программирования, обеспечивают создание интерфейса пользователя и типовые операции обработки;
SQL – языки запросов, реализованы в большинстве многопользовательских и распределенных СУБД;
графические реляционные языки, ориентированные на конечных пользователей.
Все программы, подготовленные на языке программирования (кроме языков самого низкого уровня – машинных кодов) преобразуются с помощью компиляторов (компилятор транслирует программу без ее выполнения) или интерпретаторов (интерпретатор обеспечивает пооператорную трансляцию программы и ее выполнение) в объектный код, который с помощью редактора связей преобразуется в загрузочный модуль (исполняемую программу). Данное преобразование обеспечивают системы (среды) программирования.
Исходный код программы на алгоритмическом языке Pascal |
|
Транслятор (Компилятор) |
|
Объектный код на машинном языке |
|
Редактор связей
|
|
Загрузочный модуль (готовая программа) |
Системы программирования являются языко-ориентированными и делятся на:
«Простые», в состав которых входит компилятор, редактор связей и текстовый редактор. Представлены ранними версиями Турбо Паскаля до 3.0, Бейсика, Си, Фортраном и др.
Интегрированные среды программирования. Включают кроме компилятора, редактора связей и редакторов кода: отладчик, библиотеки функций, процедур, модулей, программ, средства оптимизации кода программ, средства поддержки программ, справочные системы и пр. Представлены Турбо Паскаль 4.0 – 7.0, Бейсиком, редакторами языков Си и др.
Визуальные средства создания приложений. Кроме средств упомянутых выше включают в себя: конструкторы форм и отчетов, меню, генераторы приложений, библиотеки объектов и методов обработки, программные модули вставки, языки манипулирования данными, переводчики языков. Представлены различными версиями программных продуктов фирмы Borland (для разработки приложений для Windows – Delphi, C++, C++ Builder, для разработки приложений предназначенных для работы в сети Internet на языке Java - IntraBuilder, Visual dBASE для визуальной разработки приложений баз данных), версиями программных продуктов фирмы Microsoft (для разработки приложений для Windows, а также для прикладных программ в среде Microsoft Office - Visual Basic, Visual Basic for Application, для визуальной разработки приложений баз данных MS Access), Mat LAB (фирмы MathWork) , MathCAD (фирмы MathSoft), и др.