Javap Asciz Strings - PullRequest
       35

Javap Asciz Strings

5 голосов
/ 20 ноября 2011

Небольшой вопрос о выводе, сгенерированном командой javap относительно постоянного пула. Когда javap печатает пул, он определяет строковые константы как Asciz строки, что, как я понимаю, означает null прекращено Ascii:

const #20 = Asciz       hello world;

Это будет означать, что длина строки неизвестна, и для анализа вы будете читать каждый байт, пока не встретите null.

Однако длина констант строки пула констант определяется двумя байтами, предшествующими строке, и к ней не добавляется null. ( Спецификация постоянного пула ).

Определяет ли javap строки как Asciz неправильно или у Asciz есть другое значение, о котором я не знаю?

Ответы [ 2 ]

4 голосов
/ 20 ноября 2011

См. ошибка # 6868539 .Это исправлено в OpenJDK7, теперь javap печатает Utf8 вместо.

0 голосов
/ 20 ноября 2011

const # 20 - это не фактическая строка, а символы UTF8, используемые для вашей строки.Возможно, у вас есть другая константа, которая является строкой, которая ссылается на константу # 20.Константы asciz используются не только для строк, например для имен полей и т. Д. Фактическая информация содержит тег UTF8, длину и байты.

...