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


A B C D F Г Я J L М. N P R S T W

широкий

Работа

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

Формат 1

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

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

Формат 2

широкий
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 не даже при нормальном смещении из кода операции. Встроенная инструкция никогда не должна выполняться непосредственно; его код операции никогда не должен быть целью любой инструкции передачи управления.


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

Спецификация Виртуальной машины JavaTM
Авторское право © Sun Microsystems, Inc 1999 года. Все права защищены
Пожалуйста, отправьте любые комментарии или исправления к jvm@java.sun.com

free hit counter