Модульные программы обычно состоят из нескольких независимых частей кода, называемых модулями. Компилятор обрабатывает каждый из этих модулей независимо, а компоновщик (TLINK) объединяет полученные части вместе для создания выполняемого файла. О том, как использовать TLINK, рассказывается в документации по компилятору, но важно также знать, как определить и включить все файлы и библиотеки, которые могут понадобиться при компоновке. В данной Главе рассказывается о том, как это сделать.
Описание внешних идентификаторов
Может оказаться так, что вам потребуется использовать некоторые переменные или процедуры во всех модулях вашей программы. Турбо Ассемблер обеспечивает несколько директив, которые позволяют вам определить идентификаторы и библиотеки таким образом, что вы сможете использовать их глобально, а также использовать общие переменные (для которых выделяет память компоновщик). Вам потребуется также соблюдать аккуратность при назначении имен идентификаторов, поскольку различные языки имеют здесь конкретные требования. В следующий нескольких разделах мы обсудим эти директивы и соглашения по наименованию.
Соглашения для конкретного языка
Когда вы назначаете имена идентификаторам, которые планируется использовать глобально, нужно помнить об использовании спецификатора языка. К именам переменных предъявляются следующие требования:
Параметр /m (описанный в этой главе) сообщает Турбо Ассемблеру, что во всех именах идентификаторов нужно различать регистр. Параметр /mx (также описанный в этой главе) указывает, что различать регистр символов нужно только во внешних и общедоступных идентификаторах, и что все другие идентификаторы в исходном файле записаны в верхнем регистре. Когда вы используете эти два параметра вместе, для идентификаторов, описанных в Паскале, они имеют специальное значение: они приводят к тому, что рассматриваемые идентификаторы будут доступны компоновщику, как идентификаторы в верхнем регистре.
Описание общедоступных идентификаторов
При описании общедоступного идентификатора вы предполагаете, что он должен быть доступен из других модулей. Общедоступными могут быть следующие типы идентификаторов:
Для определения общедоступных идентификаторов можно использовать директиву PUBLIC, которая имеет следующий синтаксис:
PUBLIC [язык] идентификатор [,[язык] идентификатор] .
где "язык" представляет собой C, CPP, PASCAL, BASIC, FORTRAN, PROLOG или NOLANGUAGE и определяет соглашения конкретного языка, применяемые к имени переменной. Использование спецификатора языка в директиве PUBLIC временно переопределяет временно переопределяет текущую установку языка (по умолчанию NOLANGUAGE, если другой язык не задан в директиве .MODEL).
Турбо Ассемблер описывает идентификатор в объектном модуле таким образом, что он будет доступен всем другим модулям. Если вы не сделаете идентификатор общедоступным, то сможете обращаться к нему только из текущего модуля, например:
PUBLIC XYPROC ; процедура общедоступна XYPROC PROC NEAR
1 2 3
8 8 8
| |