Spec-Zone .ru
спецификации, руководства, описания, API
|
Содержание | Предыдущий | Следующий | Индекс | Спецификация Виртуальной машины JavaTM |
tableswitch | |
<0-3 byte pad> | |
defaultbyte1 | |
defaultbyte2 | |
defaultbyte3 | |
defaultbyte4 | |
lowbyte1 | |
lowbyte2 | |
lowbyte3 | |
lowbyte4 | |
highbyte1 | |
highbyte2 | |
highbyte3 | |
highbyte4 | |
перейдите смещения... |
Формы tableswitch = 170 (0xaa)
Описание tableswitch является инструкцией переменной длины. Сразу после tableswitch кода операции, между нулем и тремя нулевыми байтами (обнуленные байты, не нулевой объект) вставляются как дополнение. Число нулевых байтов выбирается так, чтобы следующий байт начался в адресе, который является кратным числом четырех байтов от запуска текущего метода (код операции его первой инструкции). Сразу после дополнения следуют за байтами, составляющими серию 32-разрядных значений со знаком: значение по умолчанию, низко, высоко, и затем высоко - низко + 1 далее подписало 32-разрядные смещения. Значение низко должно быть меньше чем или равным высоко. Верхний уровень - низко + 1 подписался, 32-разрядные смещения обрабатываются как таблица переходов на основе 0. Каждое из этих 32-разрядных значений со знаком создается как (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4.
Индекс должен иметь тип int
и выталкивается от стека операнда. Если индекс менее чем низок, или индекс больше чем высокий, то целевой адрес вычисляется, добавляя значение по умолчанию к адресу кода операции этой tableswitch инструкции. Иначе, смещение по индексу позиции - низко таблицы переходов извлекается. Целевой адрес вычисляется, добавляя, которые смещают к адресу кода операции этой tableswitch инструкции. Выполнение тогда продолжается в целевом адресе.
Целевой адрес, который может быть вычислен от каждого смещения таблицы переходов, так же как те, которые могут быть вычислены от значения по умолчанию, должны быть адресом кода операции инструкции в пределах метода, который содержит эту tableswitch инструкцию.
Примечания Выравнивание, требуемое 4-байтовых операндов tableswitch инструкции, гарантирует 4-байтовое выравнивание тех операндов, если и только если метод, который содержит tableswitch, запускается на 4-байтовой границе.
Содержание | Предыдущий | Следующий | Индекс
Спецификация Виртуальной машины Java
Авторское право © 1996, 1997 Sun Microsystems, Inc. Все права защищены
Пожалуйста, отправьте любые комментарии или исправления к jvm@java.sun.com