Как написать программу на машинном языке

Компилятор преобразует понятный человеку язык в язык машинного уровня. Разве мы не можем просто написать программу на языке машинного уровня, чтобы программа выполнялась легко и быстро.

Только что понял, что этот вопрос не имеет ничего общего с Unix и Linux, у меня нет полномочий его отмечать. — X Tian

3 ответы

Да, вы можете программировать на ассемблере под Linux.

Проверьте это и это вопросы о переполнении стека, например. Так же Сборка Linux HOWTO выглядит хорошо.

ответ дан 23 мая ’17, 12:05

Технически, asm — это один маленький шаг, удаленный от реального машинного кода. — КодКлоун42

Компилятор преобразует понятный человеку язык в язык машинного уровня. Разве мы не можем просто написать программу на языке машинного уровня, чтобы программа выполнялась легко и быстро.

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

Как написать программу на ассемблере 64 бит

Этот формат понимают оставил и загрузчик (в *nix загрузчик является частью ядра). Единственное место, где существует настоящий машинный код, — это системная память.

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

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

Читайте также:
Как в программе про100 посчитать кромку

Тогда как устроены компиляторы, чтобы они могли взаимодействовать с языком машинного уровня. Должен быть какой-то язык. — Хаби

Потому что компиляторы сами компилируются. Они выполняются как машинный код в памяти, исполняемый процессором, точно так же, как КАЖДЫЙ другой процесс. В этом значение машинного кода. Это единственное, что действительно работает на оборудовании. — КодКлоун42

Самые первые компиляторы были написаны на ассемблере. С тех пор компиляторы обычно компилируют сами себя, а при переносе на новую машину мы используем кросс-компиляцию: учим компилятор, как писать код для новой машины, а затем компилируем компилятор с этим. Вот как C переносится на новые машины. Кроме того, большинство языков высокого уровня сами написаны на C. Например, python, java, perl и т. д. — Max

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

Источник: stackovergo.com

1.7. Пример разработки программы в машинных кодах

При программировании на машинном языке адреса, коды команд и данные записываются в 16-ричной системе счисления.

Разработаем программу для вычисления выражения

в котором все операнды и результат – двухбайтные данные. K, R, M размещены в сегменте данных, а N – в регистре DX. Числа со знаком представлены в дополнительном коде (ДК). Например, ДК чисел K=+60,R=-10,N=+30 соответственно равны [K]ДК=0060, [R]ДК=FFF0, [N]ДК=0030. Результат M=+1C0, [M]ДК=01C0.

Правило образования ДК.

ДК положительного числа есть само число, представленное в формате байта или слова. ДК отрицательного числа есть инверсия (not) числа плюс единица, например в формате слова [‑30]ДК=not(0030)+1=FFCF+1=FFD0. Инверсия 16-ричной цифры равна:not()=F–.

Читайте также:
Кто является автором программы детство

В табл. 1.2 приведена программа вычисления выражения (1.1). Начальный эффективный адрес программы равен 100. Этому адресу соответствует физический адрес CS2 4 +100. Далее его будем обозначать какCS:0100.

Эффективные адреса данных лежат в диапазоне 0500-0505, а физические – в диапазоне DS:0500 — DS:0505.

Таблица 1.2. Программа вычисления выражения M=K+N-R+120

Источник: studfile.net

Программирование в машинном коде и на языке ассемблера

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

16 00 58 21 00 00 06 08 29 17 D2 0Е 40 19 05 С2 08 40 С9

в действительности представляет собой подпрограмму умножения, начинающуюся по адресу 4000 для микропроцессора Z80, но даже опытному программисту потребуются справочники (и изрядное количество времени), чтобы составить последовательность из этих 19 чисел.

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

LOAD Temperature

JUMP POSITIVE to Fault_Handler

довольно просто понять все, что происходит.

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

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

Популярное

  • Проектирование АСУТП. Книга 2. Методическое пособие
  • П-, ПИ-, ПД-, ПИД — регуляторы
  • В мире АСУТП
  • Показатели качества процесса управления
  • Законы регулирования: П, ПИ, ПИД
  • Типовые звенья систем регулирования
  • Первичные преобразователи. Датчики
  • Определение параметров переходных характеристик
  • Передаточная функция
  • Сигналы и стандарты
  • Классификация систем автоматического регулирования
  • Стадии и этапы создания АСУТП
Читайте также:
Структура программы и типы данных

Источник: automation-system.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru