Составители:
Рубрика:
Комментарии в IL-программах записываются так же, как в языке C#:
• Если в строке программы встречается «//», то остаток строки
считается комментарием.
• Текст, начинающийся с «/*», оканчивающийся на «*/» и не со-
держащий «*/», считается комментарием.
3.5.2. Синтаксис
IL-программа представляет собой последовательность объявлений.
В этом разделе мы рассмотрим синтаксис объявлений следующих элемен-
тов IL-программы:
• сборка;
• модуль;
• тип;
• поле;
• метод.
3.5.2.1. Сборки и модули
Каждый IL-файл для ассемблера ILASM представляет собой отдель-
ный модуль сборки. Мы не будем касаться вопросов компиляции сборки,
состоящей из нескольких модулей, поэтому приведем образец заголовка
IL-файла для одномодульной сборки:
.assembly MyProgram { }
.module MyProgram.exe
.assembly extern mscorlib { }
В заголовке используются три директивы: директива «.assembly» поз-
воляет задать имя нашей сборки. Директива «.module» определяет имя мо-
дуля и совпадает с именем исполняемого файла, в который будет записа-
на откомпилированная сборка. Директива «.assembly extern» указывает,
что мы будем импортировать сборку mscorlib, в которой находится основ-
ная часть библиотеки классов .NET. В фигурных скобках после имени
сборки могут перечисляться свойства сборки, но в простейшем случае их
можно оставить пустыми.
3.5.2.2. Типы
Объявление типа осуществляется с помощью директивы «.class» и со-
стоит из четырех частей:
1. последовательность атрибутов типа;
2. имя типа;
3. базовый тип;
4. список реализуемых интерфейсов.
Common Intermediate Language
125
метаданные. В этом разделе мы проведем краткий обзор формата, в кото-
ром записываются эти файлы, и рассмотрим несколько примеров про-
грамм. Будем называть IL-форматом формат файлов, поддерживаемый ас-
семблером ILASM, а программы, записанные в IL-формате, – IL-про-
граммами.
3.5.1. Основные элементы лексики
Программы в IL-формате состоят из следующих лексических эле-
ментов:
• идентификаторы;
• метки;
• константы;
• зарезервированные слова;
• специальные знаки;
• комментарии.
Идентификаторы и метки чаще всего представляют последователь-
ности символов, начинающиеся с латинской буквы (или с символов «_»,
«$», «@» и «?»), за которой следуют латинские буквы, цифры или символы
«_», «$», «@» и «?». Кроме того, для идентификаторов и меток существует
особая форма записи в апострофах: она позволяет включать в идентифи-
каторы любые символы Unicode. Например:
Label_1 $Name 'Идентификатор'
Несколько идентификаторов могут быть объединены в один иденти-
фикатор с помощью точек. Например:
System.Console.WriteLine
Целочисленные константы записываются либо в десятичной системе
счисления, либо в шестнадцатеричной (тогда перед ними ставится пре-
фикс «0x»). Например:
128 -10 0xFF10B000
В вещественных константах точка используется для разделения целой
и дробной части, а символы «e» и «E» служат для указания экспоненциаль-
ной части. Кроме того, поддерживается особая форма записи float32 (це-
лая_константа) и float64 (целая_константа), позволяющая представить
целое число в виде числа с плавающей точкой. Например:
5.5 -1.05e10 float32(128) float64(50)
Строковые константы записываются в двойных кавычках и могут
содержать Escape-последовательности «\t», «\n» и «\xxx», где восьмерич-
ное число xxx задает код символа от 0 до 255. Для переноса строковой
константы на другую строку программы используется символ «\». Кроме
того, для строковых констант поддерживается операция конкатенации
«+». Например:
“Alpha Beta Gamma” “Hello, World\n” “Concat”+”enation”
124
CIL и системное программирование в Microsoft .NET
124 CIL и системное программирование в Microsoft .NET Common Intermediate Language 125 метаданные. В этом разделе мы проведем краткий обзор формата, в кото- Комментарии в IL-программах записываются так же, как в языке C#: ром записываются эти файлы, и рассмотрим несколько примеров про- • Если в строке программы встречается «//», то остаток строки грамм. Будем называть IL-форматом формат файлов, поддерживаемый ас- считается комментарием. семблером ILASM, а программы, записанные в IL-формате, – IL-про- • Текст, начинающийся с «/*», оканчивающийся на «*/» и не со- граммами. держащий «*/», считается комментарием. 3.5.1. Основные элементы лексики 3.5.2. Синтаксис Программы в IL-формате состоят из следующих лексических эле- IL-программа представляет собой последовательность объявлений. ментов: В этом разделе мы рассмотрим синтаксис объявлений следующих элемен- • идентификаторы; тов IL-программы: • метки; • сборка; • константы; • модуль; • зарезервированные слова; • тип; • специальные знаки; • поле; • комментарии. • метод. Идентификаторы и метки чаще всего представляют последователь- ности символов, начинающиеся с латинской буквы (или с символов «_», 3.5.2.1. Сборки и модули «$», «@» и «?»), за которой следуют латинские буквы, цифры или символы Каждый IL-файл для ассемблера ILASM представляет собой отдель- «_», «$», «@» и «?». Кроме того, для идентификаторов и меток существует ный модуль сборки. Мы не будем касаться вопросов компиляции сборки, особая форма записи в апострофах: она позволяет включать в идентифи- состоящей из нескольких модулей, поэтому приведем образец заголовка каторы любые символы Unicode. Например: IL-файла для одномодульной сборки: Label_1 $Name 'Идентификатор' .assembly MyProgram { } Несколько идентификаторов могут быть объединены в один иденти- .module MyProgram.exe фикатор с помощью точек. Например: .assembly extern mscorlib { } System.Console.WriteLine В заголовке используются три директивы: директива «.assembly» поз- Целочисленные константы записываются либо в десятичной системе воляет задать имя нашей сборки. Директива «.module» определяет имя мо- счисления, либо в шестнадцатеричной (тогда перед ними ставится пре- дуля и совпадает с именем исполняемого файла, в который будет записа- фикс «0x»). Например: на откомпилированная сборка. Директива «.assembly extern» указывает, 128 -10 0xFF10B000 что мы будем импортировать сборку mscorlib, в которой находится основ- В вещественных константах точка используется для разделения целой ная часть библиотеки классов .NET. В фигурных скобках после имени и дробной части, а символы «e» и «E» служат для указания экспоненциаль- сборки могут перечисляться свойства сборки, но в простейшем случае их ной части. Кроме того, поддерживается особая форма записи float32 (це- можно оставить пустыми. лая_константа) и float64 (целая_константа), позволяющая представить целое число в виде числа с плавающей точкой. Например: 3.5.2.2. Типы 5.5 -1.05e10 float32(128) float64(50) Объявление типа осуществляется с помощью директивы «.class» и со- Строковые константы записываются в двойных кавычках и могут стоит из четырех частей: содержать Escape-последовательности «\t», «\n» и «\xxx», где восьмерич- 1. последовательность атрибутов типа; ное число xxx задает код символа от 0 до 255. Для переноса строковой 2. имя типа; константы на другую строку программы используется символ «\». Кроме 3. базовый тип; того, для строковых констант поддерживается операция конкатенации 4. список реализуемых интерфейсов. «+». Например: “Alpha Beta Gamma” “Hello, World\n” “Concat”+”enation”
Страницы
- « первая
- ‹ предыдущая
- …
- 67
- 68
- 69
- 70
- 71
- …
- следующая ›
- последняя »