Spec-Zone .ru
спецификации, руководства, описания, API
Содержание | Предыдущий | Следующий | ИндексСпецификация Виртуальной машины JavaTM


широкий

Работа Расширьте индекс локальной переменной на дополнительные байты

широкий
<код операции>
indexbyte1
indexbyte2


где <код операции> является одним из iload, fload, aload, lload, dload, istore, fstore, astore, lstore, dstore, или мочить

широкий
iinc
indexbyte1
indexbyte2
constbyte1
constbyte2


Формы широкий = 196 (0xc4)

Стек То же самое как измененная инструкция

Описание Широкая инструкция изменяет поведение другой инструкции. Это берет один из двух форматов, в зависимости от изменяемой инструкции. Первая форма широкой инструкции изменяет одну из инструкций iload, fload, aload, lload, dload, istore, fstore, astore, lstore, dstore, или мочить. Вторая форма применяется только к iinc инструкции.

В любом случае сам широкий код операции сопровождается в скомпилированном коде кодом операции широкой инструкции, изменяет. В любой форме два байта без знака indexbyte1 и indexbyte2 следуют за измененным кодом операции и собираются в 16-разрядный индекс без знака к локальной переменной в текущем фрейме (§3.6), где значение индекса (indexbyte1 << 8) | indexbyte2. Расчетный индекс должен быть допустимым индексом в локальные переменные текущего фрейма. Где широкая инструкция изменяет lload, dload, lstore, или dstore инструкцию, индекс после расчетного индекса (индекс + 1) должен также быть допустимым индексом в локальные переменные. Во второй форме два непосредственных байта без знака constbyte1 и constbyte2 следуют за indexbyte1 и indexbyte2 в потоке кода. Те байты также собираются в 16-разрядную константу со знаком, где константа (constbyte1 << 8) | constbyte2.

Расширенный байт-код работает как нормальный, за исключением использования того, чем шире индексируют и, в случае второй формы, тем больший инкрементный диапазон.

Примечания Хотя мы говорим, что широкий "изменяет поведение другой инструкции," широкая инструкция эффективно обрабатывает измененную инструкцию как операнды к широкому, денатурируя встроенную инструкцию в процессе. В случае измененной iinc инструкции один из логических операндов iinc не даже при нормальном смещении из кода операции. Встроенная инструкция никогда не должна выполняться непосредственно; его код операции никогда не должен быть целью любой инструкции передачи управления.


Содержание | Предыдущий | Следующий | Индекс

Спецификация Виртуальной машины Java

Авторское право © 1996, 1997 Sun Microsystems, Inc. Все права защищены
Пожалуйста, отправьте любые комментарии или исправления к jvm@java.sun.com

free hit counter