Win32asm обучение


Урок 1 - Ассемблер


        Win32Asm Tutorial

       

назад 1 - Ассемблер вперед

1.0 - Ассемблер

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

add eax, edx

Эта инструкция, add, складывает вместе два значения. Eax и edx называются регистрами, они могут содержать значения, которые хранятся внутри процессора. Этот код будет преобразован в 66 03 C2 (шестнадцатиричный код). Процессор читает эти коды, и выполняет операцию, которую они представляют. Языки высокого уровня, например С, при компиляции преобразовывается в ассемблер, а ассемблер в двоичный код:

код C >>Компилятор>>

Ассемблер >>Ассемблер>>

выходной код (шестнадцатиричный)
a = a + b; add eax, edx 66 03 C2

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

1.1 - Почему?

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

Примечание от переводчика:
Я провел эксперимент, написал программу (обычное окно с одной кнопкой в центре, которая закрывает его) на разных языках высокого уровня и после компиляции получил вот такие размеры этой самой программы:

C++ Builder 4 - 22 kb

Delphi 5 - 291 kb

Delphi 5 + библиотека KOL - 26 kb



- Начало -  - Назад -  - Вперед -



Книжный магазин