90 Commits

Author SHA1 Message Date
JesusFreke@JesusFreke.com
0900e0040e - Added support for specifying a char literal for various types of instruction
- Fixed a bug preventing the usage of negative float/double literals
- Fixed escape sequences in character literals
- Added source file name to parser error messages
- Fixed an issue where the parser would exit without an error message, when it encountered a bad "top level" token (in the smali_file rule)
- Fixed an issue that prevented the usage of non long/double literals with the the const-wide instruction
- Fixed an issue with the invoke-static/range, where it wouldn't calculate the number of parameter registers correctly, and would erroneously generate an error message

git-svn-id: https://smali.googlecode.com/svn/trunk@90 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-05 05:14:26 +00:00
JesusFreke@JesusFreke.com
5dc3a8d75a - Added a new "p0" style register reference, where p0 indicates the first parameter register, p1 the 2nd parameter register and so forth. This makes it less annoying when you are writing a method and have to add more registers, which would push the parameter registers back.
- Updated the the tests and examples with the new register format, where appropriate

git-svn-id: https://smali.googlecode.com/svn/trunk@89 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-04 06:44:10 +00:00
JesusFreke@JesusFreke.com
468e5d0d1b moved examples
git-svn-id: https://smali.googlecode.com/svn/trunk@88 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-04 06:27:26 +00:00
JesusFreke@JesusFreke.com
b079ef4c2e moved examples
git-svn-id: https://smali.googlecode.com/svn/trunk@87 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-04 06:26:22 +00:00
JesusFreke@JesusFreke.com
3ca2a39dea Deleted old examples
git-svn-id: https://smali.googlecode.com/svn/trunk@86 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-04 05:57:24 +00:00
JesusFreke@JesusFreke.com
e69c8af0ef Fix up how the padding is handled for the special opcodes
git-svn-id: https://smali.googlecode.com/svn/trunk@85 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-04 05:55:36 +00:00
JesusFreke@JesusFreke.com
9c5bb815a0 removed TODO
git-svn-id: https://smali.googlecode.com/svn/trunk@84 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-04 05:55:06 +00:00
JesusFreke@JesusFreke.com
1834b365d6 - changed the comment char from ; to #
- updated the tests and examples to use the new comment style
- changed the lexer error messages to include the source file path

git-svn-id: https://smali.googlecode.com/svn/trunk@83 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-04 05:54:34 +00:00
JesusFreke@JesusFreke.com
e53f5ae41b rename the AnnotationTypes example
git-svn-id: https://smali.googlecode.com/svn/trunk@82 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-04 05:02:24 +00:00
JesusFreke@JesusFreke.com
3c0207bddd re-add the AnnotationTypes example
git-svn-id: https://smali.googlecode.com/svn/trunk@81 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-04 05:01:55 +00:00
JesusFreke@JesusFreke.com
baf5a9205b whitespace
git-svn-id: https://smali.googlecode.com/svn/trunk@80 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-04 04:57:47 +00:00
JesusFreke@JesusFreke.com
c2b3b1457a moved the examples
git-svn-id: https://smali.googlecode.com/svn/trunk@79 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-04 04:39:25 +00:00
JesusFreke@JesusFreke.com
20f261138f Added the junit-tests directory, which contains a junit "Suite" class, and a couple of initial tests
git-svn-id: https://smali.googlecode.com/svn/trunk@78 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-04 04:25:24 +00:00
JesusFreke@JesusFreke.com
2c5bb6ddf8 Changed how the "UnsupportedEncodingException" is handled
git-svn-id: https://smali.googlecode.com/svn/trunk@77 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-04 04:18:55 +00:00
JesusFreke@JesusFreke.com
5eb3d80d87 Fix up how the padding is handled for the special opcodes
git-svn-id: https://smali.googlecode.com/svn/trunk@76 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-04 04:11:09 +00:00
JesusFreke@JesusFreke.com
a7266ebdce redid .equals() for CachedIntegerValueField
git-svn-id: https://smali.googlecode.com/svn/trunk@75 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-04 02:48:06 +00:00
JesusFreke@JesusFreke.com
4561355e99 Changed SignedLeb128 for the register fields to Leb128
git-svn-id: https://smali.googlecode.com/svn/trunk@74 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-04 02:41:26 +00:00
JesusFreke@JesusFreke.com
89063e593b Removed TODO
git-svn-id: https://smali.googlecode.com/svn/trunk@73 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-04 02:39:27 +00:00
JesusFreke@JesusFreke.com
608ed0ef87 Removed the old HelloWorld example
git-svn-id: https://smali.googlecode.com/svn/trunk@72 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-03 07:06:29 +00:00
JesusFreke@JesusFreke.com
d54c635f84 - Added support for enum literals
- added "Enums" example, that shows how to construct an enum class
- added an enum value to the AnnotationValues example, to show how enum values are specified in an annotation

git-svn-id: https://smali.googlecode.com/svn/trunk@71 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-03 07:05:59 +00:00
JesusFreke@JesusFreke.com
361fa2548e Removed the debugging output in the lexer that printed out each token
git-svn-id: https://smali.googlecode.com/svn/trunk@70 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-03 06:09:39 +00:00
JesusFreke@JesusFreke.com
bd85442b25 Added a junit4 dependency to the Maven pom
git-svn-id: https://smali.googlecode.com/svn/trunk@69 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-03 05:10:27 +00:00
JesusFreke@JesusFreke.com
dbfce409d4 Added the "RecursiveAnnotation" example, which shows a humerous example of an annotation that references itself recursively, causing a stack overflow.
git-svn-id: https://smali.googlecode.com/svn/trunk@68 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-03 05:08:58 +00:00
JesusFreke@JesusFreke.com
cf396faa1a Added the "AnnotationTypes" example, which gives some examples of how to create and retrieve the various types of annotations (class, method, field, parameter)
git-svn-id: https://smali.googlecode.com/svn/trunk@67 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-03 05:05:52 +00:00
JesusFreke@JesusFreke.com
e391894f1b Added the "AnnotationValues" example, that gives some examples of how to specify values in an annotation
git-svn-id: https://smali.googlecode.com/svn/trunk@66 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-03 05:03:11 +00:00
JesusFreke@JesusFreke.com
302f64499a Fixed up the HelloWorld example to use the new field and member syntax
git-svn-id: https://smali.googlecode.com/svn/trunk@65 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-03 04:59:59 +00:00
JesusFreke@JesusFreke.com
4250768620 - made the .registers directive optional. it defaults to .registers 0 if not present
- added logic to avoid creating an empty code_item (i.e. for abstract methods)
- changed the field and parameter syntax so that there is a colon instead of a whitespace between the field/local name and the following type
- changed the member name syntax, so that the initial class is specified with the preceeding 'L' and folling ';', and changed the seperator between the class name and the member name to '->' instead of just another '/'
- added the ability to specify members and fields as constants for static fields or annotations (note: dalvik doesn't seem to like embedded field references)
- fixed the short and byte literals in the parser (they were mistakenly using the _EMIT token)
- fixed an issue with char literals where the value was always a single quote
- renamed the CLASS_OR_ARRAY_TYPE_DESCRIPTOR token and related rules to REFERENCE_TYPE_DESCRIPTOR
- renamed the FIELD_TYPE_DESCRIPTOR token and related rules to NONVOID_TYPE_DESCRIPTOR

git-svn-id: https://smali.googlecode.com/svn/trunk@64 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-03 04:58:54 +00:00
JesusFreke@JesusFreke.com
5cf0028e73 fixed the name of the "field name" field, used for dumping
git-svn-id: https://smali.googlecode.com/svn/trunk@63 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-03 04:47:30 +00:00
JesusFreke@JesusFreke.com
63098c01c4 - fix the getValueArg() calculation for several types of encoded value sub fields
- change the placement logic in encoded value to get the value arg from the sub field's getValueArg(), instead of calculating it itself
- fixed FloatEncodedValueSubField's getValueType() to return VALUE_FLOAT instead of VALUE_LONG

git-svn-id: https://smali.googlecode.com/svn/trunk@62 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-03 04:45:59 +00:00
JesusFreke@JesusFreke.com
c7a1ff2452 Sort the individual name/value pairs in an annotation by name
git-svn-id: https://smali.googlecode.com/svn/trunk@61 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-03 04:42:37 +00:00
JesusFreke@JesusFreke.com
9b649b5efc Fixed test to use getTypeDescriptor() instead of toString()
git-svn-id: https://smali.googlecode.com/svn/trunk@60 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-03 04:40:20 +00:00
JesusFreke@JesusFreke.com
b0b76a1924 Fixed an issue where the AnnotationSetRefList section didn't have a corresponding map entry
git-svn-id: https://smali.googlecode.com/svn/trunk@59 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-02 07:58:50 +00:00
JesusFreke@JesusFreke.com
76ec9bbc90 Fixed up and moved the basic HelloWorld example, so that it is a console app instead of an android app
git-svn-id: https://smali.googlecode.com/svn/trunk@58 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-02 05:57:20 +00:00
JesusFreke@JesusFreke.com
56c3e45ad4 Fixed an issue with generated dex files that have no field references
git-svn-id: https://smali.googlecode.com/svn/trunk@57 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-02 05:52:15 +00:00
JesusFreke@JesusFreke.com
4fd96cb22d Added the "assembly" plugin to the pom.xml, to allow building a self-contained executable jar, with "mvn assembly:assembly"
git-svn-id: https://smali.googlecode.com/svn/trunk@56 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-02 03:51:59 +00:00
JesusFreke@JesusFreke.com
74c7bd5600 Added a "real" command line front-end, instead of the crappy 1-file test harness I had been using
git-svn-id: https://smali.googlecode.com/svn/trunk@55 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-02 03:50:57 +00:00
JesusFreke@JesusFreke.com
68f6ce0460 Fixed an issue when a .smali file had no class level .source directive
git-svn-id: https://smali.googlecode.com/svn/trunk@54 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-02 03:48:16 +00:00
JesusFreke@JesusFreke.com
219d93dffc added the "annotation" access spec for classes
git-svn-id: https://smali.googlecode.com/svn/trunk@53 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-02 03:47:26 +00:00
JesusFreke@JesusFreke.com
78af43d299 fixed an issue in the AnnotationDirectoryItem construction (was checking the wrong objects - automated refactoring flub most likely)
git-svn-id: https://smali.googlecode.com/svn/trunk@52 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-02 03:45:47 +00:00
JesusFreke@JesusFreke.com
31bb6ff4e7 fixed an issue in the placement of the map section
git-svn-id: https://smali.googlecode.com/svn/trunk@51 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-06-02 03:42:13 +00:00
JesusFreke@JesusFreke.com
35329727a4 - Added the ability to dexlib to do an annotated dump of the dex file as it is writing it (similiar to the --dump-to functionality in dx)
- Other misc refactoring and cleanup in dexlib

git-svn-id: https://smali.googlecode.com/svn/trunk@50 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-05-31 07:08:04 +00:00
JesusFreke@JesusFreke.com
dbdfc6f468 Added missing AnnotationVisibility.java file, which was missed in the previous commit
git-svn-id: https://smali.googlecode.com/svn/trunk@49 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-05-30 02:12:29 +00:00
JesusFreke@JesusFreke.com
6cbfb8b875 Added support for annotations
git-svn-id: https://smali.googlecode.com/svn/trunk@48 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-05-28 00:44:20 +00:00
JesusFreke@JesusFreke.com
0d16dfbfcc - add support for the .end local directive
- add support for the .restart local directive
- add support for the .prologue directive
- add support for the .epilogue directive
- add support for the "extended" .local directive (i.e. the optional signature)
- add support for the .source directive

git-svn-id: https://smali.googlecode.com/svn/trunk@47 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-05-23 07:57:13 +00:00
JesusFreke@JesusFreke.com
f175e1d987 - changed the syntax for the .catch directive, to get rid of "from", "to" and "using" (too visual basicy)
- added support for the .local directive, which allows you to define a local variable in the debug info (no way to undefine it until ".end local" is implemented)

git-svn-id: https://smali.googlecode.com/svn/trunk@46 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-05-22 06:04:14 +00:00
JesusFreke@JesusFreke.com
66a23e6ecc - Added support for parameter name debug info
- Changed the grammar so that the .registers directive can appear anywhere in the .method, instead of requiring it to be the first thing

git-svn-id: https://smali.googlecode.com/svn/trunk@45 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-05-22 00:42:12 +00:00
JesusFreke@JesusFreke.com
aa7e507bac Added initial support for method level debug info (currently line info only)
git-svn-id: https://smali.googlecode.com/svn/trunk@44 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-05-18 06:45:09 +00:00
JesusFreke@JesusFreke.com
51b326d5a6 Fixed a bug in the logic to read in an EncodedValue
git-svn-id: https://smali.googlecode.com/svn/trunk@43 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-05-18 01:21:00 +00:00
JesusFreke@JesusFreke.com
74a8772861 Only allow a single class level source directive
git-svn-id: https://smali.googlecode.com/svn/trunk@42 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-05-17 21:42:39 +00:00
JesusFreke@JesusFreke.com
73d29aa52f - Added support for .implements directive, to declare interfaces that a class implements
- Added support for the class level .source directive, to set the source file string for the class
- Changed the parser so that the top level directives (.class, .super, .implements, etc.) can appear anywhere in the file in any order, instead of requiring them to be at the front of the file in a specific order
- Added some better error reporting to the parser, and changed the lexer to immediately exit on an error


git-svn-id: https://smali.googlecode.com/svn/trunk@41 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
2009-05-17 21:24:50 +00:00