Связывание программ на ассемблере с другими языками

Нелегальная сфера деятельности

Программирование на языке ассемблера характерно также для нелегальных сфер деятельности в ИТ, в частности, с использованием ассемблера производятся:

· Взлом программ. «Оригинал» ПО, копии которого продаются незаконно, если в нём использовались технические средства защиты авторских прав, вероятно, был взломан с помощью отладчика и знаний языка ассемблера. Это позволяет при помощи отладчика или дизассемблера найти внутри кода программы функцию, ответственную за ввод кода активации или прекращение работы демонстрационной версии программы. Взломщик может изменить исходный код программы при помощи специального редактора (1), либо создать генератор ключа (2). Первый способ более прост для конечного пользователя. Второй менее наказуем.[4] (УКРФ ст. 272 до 2 лет[5])

· Создание вирусов и других вредоносных программ. (УКРФ ст. 273 до 3 лет, при тяжких последствиях до 7 лет[6])

Поскольку на ассемблере часто разрабатываются только фрагменты программ, их необходимо связывать с остальными частями программной системы, написанными на других языках. Это достигается 2 основными способами:

· На этапе компиляции — вставка в программу ассемблерных фрагментов (англ. inline assembler) с помощью специальных директив языка (в частности, данный способ поддерживается языком программирования Си), в том числе написание процедур на языке ассемблера. Способ удобен для несложных преобразований данных, но полноценного ассемблерного кода, с данными и подпрограммами, включая подпрограммы с множеством входов и выходов, не поддерживаемых высокоуровневыми языками, с помощью него сделать нельзя.

· На этапекомпоновки, или раздельная компиляция. Для взаимодействия скомпонованных модулей достаточно, чтобы связующие функции[7] поддерживали нужные соглашения вызова (англ. calling conventions) и типы данных. Написаны же отдельные модули могут быть на любых языках, в том числе и на ассемблере.