Spec-Zone .ru
спецификации, руководства, описания, API
|
Содержание | Предыдущий | Следующий | Индекс | Спецификация Виртуальной машины JavaTM |
широкий | |
<код операции> | |
indexbyte1 | |
indexbyte2 |
где <код операции> является одним из iload, fload, aload, lload, dload, istore, fstore, astore, lstore, dstore, или мочить
широкий | |
iinc | |
indexbyte1 | |
indexbyte2 | |
constbyte1 | |
constbyte2 |
Стек То же самое как измененная инструкция
Описание Широкая инструкция изменяет поведение другой инструкции. Это берет один из двух форматов, в зависимости от изменяемой инструкции. Первая форма широкой инструкции изменяет одну из инструкций 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