Add lambda experimental dalvik opcodes

* Add new -X/--experimental flag to [dis]assemble opcodes not in art yet
* Add new opcodes liberate-variable, box-lambda, unbox-lambda,
                  capture-variable, create-lambda, invoke-lambda
* Add support for encoding 25x instructions
* Adds LambdaTest to check new opcodes assemble/disassemble properly

TODO: invoke-lambda-range

Change-Id: I5c8bcbfa8b6cb9a13ef2017fce2d1b7fda6e11c3
44 files changed
tree: bdbc5c4f2ad3ea320798ade74888490123c30ad5
  1. .gitignore
  4. baksmali/
  5. build.gradle
  6. deodexerant/
  7. dexlib2/
  8. examples/
  10. gradle/
  11. gradlew
  12. gradlew.bat
  13. scripts/
  14. settings.gradle
  15. smali-integration-tests/
  16. smali/
  17. util/


smali/baksmali is an assembler/disassembler for the dex format used by dalvik, Android‘s Java VM implementation. The syntax is loosely based on Jasmin’s/dedexer's syntax, and supports the full functionality of the dex format (annotations, debug info, line info, etc.)

The primary webpage is, and the source is also mirrored at If you are interested in submitting a patch, feel free to send me a pull request on either site.


  • googlecode Issue tracker - For any bugs/issues/feature requests
  • #smali on freenode - Free free to drop by and ask a question. Don't expect an instant response, but if you hang around someone will respond. Think of it more in terms of.. multi-player notepad.

Some useful links for getting started with smali