Intereting Posts
Служба Android еще жива даже после вызова onDestroy ()? SimpleDateFormat (шаблон String, локаль Locale), например, Locale.US для дат ASCII IOS cotrols скрываются и уходят как андроид Как настроить Google Cloud Messaging для Android? Как создать изменяемый размер прямоугольника с пользовательскими событиями касания на Android? Теоретический вопрос: загрузить внешний файл XML-Layout в Android Не удалось запустить работу: UnsupportedOperationException: addView (View, LayoutParams) не поддерживается в AdapterView Как использовать Android Studio с Cocos2d-x Spinner автоматически выбирается при вводе активности. Как я могу избежать этого? Ошибка при установке приложения (INSTALL_FAILED_DEXOPT) Расчет расстояния между двумя географическими точками Программно обновлять виджет из активности / службы / получателя Android: документация для контента: // sms / "type" значения? Android Очистка всех полей EditText с кнопкой Clear Обнаружение силовой атаки приложения Android

Добавить новые регистры на байт-код Dalvik

все. Я встретил проблему с прибором по бат-коду Дальвика.

Байт-код происхождения:

virtual methods .method public onClick(Landroid/view/View;)V .locals 12 .param p1, "v" # Landroid/view/View; ... return-void .end method 

Чтобы что-то напечатать, мне нужно добавить 4 новых регистра. Однако 12 (локальный) +2 (аргументы) +4 (новый)> 16, что приведет к проблеме для некоторой команды.

Итак, я думаю об идее в дупле:

Число целых регистров равно 20. v0-v11 являются локальными, v18-v19 – аргументами.

Сначала перенесите v18-v19 в v12-v13, а аргументы – в v15. К тому же,

Нам нужно изменить p0 на v12, p1 на v13.

Если мы хотим использовать 4 новых регистра, переместите v0-v3 в v14-17. После обработки 4 новых регистров переместите v14-v17 в v0-v3 обратно.

Новый байт-код становится:

 virtual methods .method public onClick(Landroid/view/View;)V .locals 18 .param p1, "v" # Landroid/view/View; move v12, v18 move v13, v19 ... //want to use 4 new registers move v14, v0 move v15, v1 move v16, v2 move v17, v3 //use 4 new registers move v0, v14 move v1, v15 move v2, v16 move v3, v17 return-void .end method 

К сожалению, я встретил Java.lang.VerifyError . Может ли кто-нибудь мне помочь? Спасибо.

Solutions Collecting From Web of "Добавить новые регистры на байт-код Dalvik"