вышло из-под контроля. Большинство новых разработок очень похожи на
UltraSPARC II, но содержат меньшее число форматов команд.
JVM – машина совершенно другая. Здесь уровень команд изначально
разрабатывался таким образом, чтобы небольшие программы можно было
передавать по Internet и интерпретировать на программном обеспечении
другого компьютера. Эта была разработка для одного языка. Это привело к
использованию стека и коротким командам разной длины с очень высокой
плотностью (в среднем всего 1,8 байт на команду). Создание аппаратного
обеспечения, которое выполняет одну команду JVM за один раз и при
выполнении одной команды обращается к памяти два или три раза казалось
невозможным. Однако помещение на микросхему стека из 64 слов и
преобразованию целых последовательностей команд в трехадресные
команды RISC позволило создать достаточно эффективную машину PicoJava.
Ядро современного компьютера представляет собой сильно
конвейеризированное трехрегистровое устройство загрузки/сохранения типа
RISC. UltraSPARC II декларирует эту структуру. Pentium II скрывает систему
RISC, перенимает старую архитектуру команд и разбивает команды CISC на
микрооперации RISC. Машина PicoJava также использует ядро архитектуры
RISC, но для этого комбинируется несколько команд для получения одной
операции RISC.
4.6. ПОТОК УПРАВЛЕНИЯ
Поток управления – последовательность, в которой команды
выполняются динамически, т.е. во время работы программы. При отсутствии
переходов и вызовов процедур команды вызываются из последовательных
ячеек памяти. Вызов процедуры влечет за собой изменение поток
управления, выполняемая в данный момент процедура останавливается, и
начинается выполнение вызванной процедуры. Сопрограммы связаны с
процедурами и вызывают схожие изменения в потоке управления.
Сопрограммы используются при решении задач моделирования, для
моделирования параллельных процессов. Ловушки и прерывания также
меняют поток управления и возникают при определенных ситуациях.
Последовательный поток управления и переходы
В большинстве команды выполняются последовательно и состояние
счетчика команд представляет собой возрастающую функцию.
Если программа содержит переход, то соответствие между порядком
расположения команд и порядком их выполнения нарушается. В результате
последовательность выполнения команд из самой программы уже не видна.
Это привело к появлению статьи Дейкстры под названием «Оператор goto
следует считать вредным», в которой предлагалось избегать использовать
этот оператор. Эта статья дала толчок революции в программировании.
Одним из нововведений было устранение операторов goto более
89