Байткод для Android'a
Если ли в сообществе люди, разбирающиеся в устройстве новомодной платформы Android? Насколько я понимаю, под нее можно писать и пишут на Яве. Очень интересует спецификация байткода, который генерирует его компилятор. Все чаще приходится сталкиваться с классами, которые не проходят стандартную верификацию и содержат "android" в названиях и строках. Сегодня попался такой метод:
то есть выполнение начинается с ifne, которая предполагает непустой стек. Но Sun'овская спецификация утверждает "For the first instruction of the method, the local variables that represent parameters initially contain values of the types indicated by the method's type descriptor; the operand stack is empty."
Что это такое за явление, откуда и почему оно берется и где можно про него почитать?
protected void org.[...].onActivityResult(int, int, android.content.Intent) 0000 9A002C ifne 0000002C 0003 02 iconst_null 0004 3604 istore 4 0006 1502 iload 2 0008 1504 iload 4 000A A00022 if_icmpne 0000002C 000D B200F5 getstatic #00F5<java.lang.String org.[...].EXTRA_TILE> 0010 3A04 astore 4 0012 03 iconst_0 0013 3605 istore 5 0015 2D aload_3 0016 1904 aload 4 0018 1505 iload 5 001A B6003D invokevirtual #003D<int android.content.Intent.getIntExtra(java.lang.String o, int i)> 001D 3606 istore 6 001F 2A aload_0 0020 B400F7 getfield #00F7<org.[...] org.[...]> 0023 3A04 astore 4 0025 1904 aload 4 0027 1506 iload 6 0029 B60043 invokevirtual #0043<void org.[...].setSelectedTile(int i)> 002C B1 return
то есть выполнение начинается с ifne, которая предполагает непустой стек. Но Sun'овская спецификация утверждает "For the first instruction of the method, the local variables that represent parameters initially contain values of the types indicated by the method's type descriptor; the operand stack is empty."
Что это такое за явление, откуда и почему оно берется и где можно про него почитать?
