Составители:
Рубрика:
1.1.2. Предшественники платформы .NET
Многие идеи, которые легли в основу платформы .NET, были разра-
ботаны задолго до ее появления. В этом разделе мы совершим краткий
экскурс в историю и рассмотрим несколько программных систем, кото-
рые по праву можно считать предшественниками платформы .NET.
1.1.2.1. UCSD p-System
Операционная система UCSD p-System была разработана в 1978 году
в Калифорнийском университете для учебных целей. Главное ее достоин-
ство заключалось в том, что она могла работать как на компьютерах PDP-
11, стоявших в вычислительном центре университета, так и на домашних
микрокомпьютерах студентов.
Независимость операционной системы от аппаратной платформы
достигалась путем введения понятия виртуальной p-машины (p-Machine),
обладавшей собственным набором инструкций, который назывался p-ко-
дом (p-code). Сама операционная система и все работавшие в ней про-
граммы были закодированы на p-коде, поэтому для того чтобы запустить
их на новой аппаратной платформе, требовалось всего лишь реализовать
для этой платформы интерпретатор p-кода.
Виртуальная p-машина была похожа на обычный компьютер и обла-
дала процессором и памятью. Программы хранились в памяти машины
вместе с данными, а все вычисления выполнялись через расположенный в
памяти стек. Виртуальный процессор содержал пять регистров, один из ко-
торых использовался для хранения адреса текущей выполняемой инструк-
ции (program counter – PC), а остальные обеспечивали работу со стеком.
Платформа .NET использует похожую схему обеспечения независи-
мости программ от аппаратной платформы. Все программы, работающие
на платформе .NET, закодированы на языке CIL (Common Intermediate
Language), который представляет собой набор инструкций некой абст-
рактной стековой машины. Основное отличие UCSD p-System от .NET за-
ключается в принципах выполнения программ. Программы, закодирован-
ные в p-коде, непосредственно выполнялись интерпретатором, тогда как
программы на CIL перед выполнением транслируются в код для конкрет-
ного процессора специальным компилятором.
1.1.2.2. Технология ANDF
Технология ANDF (Architectural Neutral Distribution Format) была
разработана в первой половине 1990-х годов в OSF (Open Software
Foundation) для увеличения переносимости программного обеспечения.
Смысл технологии заключается в разделении процесса компиляции про-
грамм на две разнесенные во времени и пространстве фазы:
Введение в архитектуру Microsoft .NET Framework
3
Мы будем называть метаинструментами программы, для которых
другие программы выступают в роли данных. Метаинструменты использу-
ются для разработки, тестирования, анализа и преобразования программ.
Это могут быть компиляторы, средства быстрой разработки приложений
(RAD), оптимизаторы, отладчики, верификаторы, профайлеры и т.п. Зна-
ния, полученные из этого учебника, вы сможете применять для создания
метаинструментов, которые работают на платформе .NET.
1.1.1.2. Конструирование компиляторов
В структуре практически любого современного компилятора можно
выделить, по крайней мере, две части: «front-end» и «back-end». «Front-
end» осуществляет лексический и синтаксический анализ программы и
переводит программу в некоторое промежуточное представление. А «back-
end» на основе этого промежуточного представления генерирует код для
целевой аппаратной платформы. Между этими двумя частями может на-
ходиться оптимизатор, анализирующий и преобразующий промежуточное
представление программы (см. рис. 1.1).
В нашем учебнике мы будем рассматривать представление кода в ви-
де графа потока управления, узлы которого соответствуют инструкциям
языка, а ребра обозначают передачу управления между ними. Такое пред-
ставление можно использовать в качестве промежуточного представления
кода в компиляторе.
Рис. 1.1. Структура современного компилятора
Резюмируя вышесказанное, можно сказать, что в большинстве учеб-
ников и учебных курсов, посвященных разработке компиляторов, основное
внимание уделяется алгоритмам лексического и синтаксического анализа,
то есть они учат в основном программированию «front-end'ов». В нашем
учебнике мы концентрируем внимание на архитектуре и языке целевой
платформы (.NET), а также изучаем работу с графами потоков управления.
Это означает, что мы ориентируемся на программирование «back-end'ов».
2
CIL и системное программирование в Microsoft .NET
Front-end Back-end
Оптимизатор
Промежуточное
представление
(возможно, граф потока
управления)
2 CIL и системное программирование в Microsoft .NET Введение в архитектуру Microsoft .NET Framework 3 Мы будем называть метаинструментами программы, для которых 1.1.2. Предшественники платформы .NET другие программы выступают в роли данных. Метаинструменты использу- ются для разработки, тестирования, анализа и преобразования программ. Многие идеи, которые легли в основу платформы .NET, были разра- Это могут быть компиляторы, средства быстрой разработки приложений ботаны задолго до ее появления. В этом разделе мы совершим краткий (RAD), оптимизаторы, отладчики, верификаторы, профайлеры и т.п. Зна- экскурс в историю и рассмотрим несколько программных систем, кото- ния, полученные из этого учебника, вы сможете применять для создания рые по праву можно считать предшественниками платформы .NET. метаинструментов, которые работают на платформе .NET. 1.1.2.1. UCSD p-System 1.1.1.2. Конструирование компиляторов Операционная система UCSD p-System была разработана в 1978 году В структуре практически любого современного компилятора можно в Калифорнийском университете для учебных целей. Главное ее достоин- выделить, по крайней мере, две части: «front-end» и «back-end». «Front- ство заключалось в том, что она могла работать как на компьютерах PDP- end» осуществляет лексический и синтаксический анализ программы и 11, стоявших в вычислительном центре университета, так и на домашних переводит программу в некоторое промежуточное представление. А «back- микрокомпьютерах студентов. end» на основе этого промежуточного представления генерирует код для Независимость операционной системы от аппаратной платформы целевой аппаратной платформы. Между этими двумя частями может на- достигалась путем введения понятия виртуальной p-машины (p-Machine), ходиться оптимизатор, анализирующий и преобразующий промежуточное обладавшей собственным набором инструкций, который назывался p-ко- представление программы (см. рис. 1.1). дом (p-code). Сама операционная система и все работавшие в ней про- В нашем учебнике мы будем рассматривать представление кода в ви- граммы были закодированы на p-коде, поэтому для того чтобы запустить де графа потока управления, узлы которого соответствуют инструкциям их на новой аппаратной платформе, требовалось всего лишь реализовать языка, а ребра обозначают передачу управления между ними. Такое пред- для этой платформы интерпретатор p-кода. ставление можно использовать в качестве промежуточного представления Виртуальная p-машина была похожа на обычный компьютер и обла- кода в компиляторе. дала процессором и памятью. Программы хранились в памяти машины вместе с данными, а все вычисления выполнялись через расположенный в Промежуточное памяти стек. Виртуальный процессор содержал пять регистров, один из ко- представление торых использовался для хранения адреса текущей выполняемой инструк- Front-end (возможно, граф потока Back-end ции (program counter – PC), а остальные обеспечивали работу со стеком. управления) Платформа .NET использует похожую схему обеспечения независи- мости программ от аппаратной платформы. Все программы, работающие на платформе .NET, закодированы на языке CIL (Common Intermediate Language), который представляет собой набор инструкций некой абст- Оптимизатор рактной стековой машины. Основное отличие UCSD p-System от .NET за- ключается в принципах выполнения программ. Программы, закодирован- ные в p-коде, непосредственно выполнялись интерпретатором, тогда как Рис. 1.1. Структура современного компилятора программы на CIL перед выполнением транслируются в код для конкрет- ного процессора специальным компилятором. Резюмируя вышесказанное, можно сказать, что в большинстве учеб- ников и учебных курсов, посвященных разработке компиляторов, основное 1.1.2.2. Технология ANDF внимание уделяется алгоритмам лексического и синтаксического анализа, Технология ANDF (Architectural Neutral Distribution Format) была то есть они учат в основном программированию «front-end'ов». В нашем разработана в первой половине 1990-х годов в OSF (Open Software учебнике мы концентрируем внимание на архитектуре и языке целевой Foundation) для увеличения переносимости программного обеспечения. платформы (.NET), а также изучаем работу с графами потоков управления. Смысл технологии заключается в разделении процесса компиляции про- Это означает, что мы ориентируемся на программирование «back-end'ов». грамм на две разнесенные во времени и пространстве фазы:
Страницы
- « первая
- ‹ предыдущая
- …
- 6
- 7
- 8
- 9
- 10
- …
- следующая ›
- последняя »