Я искал простой метод в smali (здесь из Android), и мне было интересно, как бы я сделал что-то простое для него, например, вернул false. Я пытался понять это, сравнивая с аналогами Java на некоторых примерах, и я думаю, что понимаю, как большая часть этого работает, но любые изменения, которые я делаю, не работают.
В настоящее время в Java используется следующий метод:
public static boolean isEnabled(){
return com.example.test.isEnabled();
}
а в smali это:
.method public static isEnabled()Z
.registers 1
.prologue
.line 3714
invoke-static {}, Lcom/example/test;->isEnabled()Z
move-result v0
return v0
.end method
В контексте выше, как бы я изменил метод, чтобы просто сделать эквивалент Java return false;
? Из того, что я смог увидеть, 0x0
является ложным, но просто возвращает эту проблему при компиляции smali (ожидая REGISTER?), поэтому мне было интересно, что именно мне нужно сделать.
Решение, а также объяснение, будут оценены! Это не для чего-то особенного, мне просто нравится смотреть на это.
move-result
принимает только регистр. Вы можете загрузить ноль в регистр v0 с помощьюconst/4 v0, 0
. См. milk.com/kodebase/dalvik-docs-mirror/docs. /dalvik-bytecode.html (или source.android. com/devices/tech/dalvik/dalvik-bytecode.html, но с форматированием не так просто справиться). - person fadden   schedule 27.08.2013