Modified syntax to require commas between the arguments to an instruction

git-svn-id: https://smali.googlecode.com/svn/trunk@8 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
This commit is contained in:
JesusFreke@JesusFreke.com 2009-04-18 19:20:51 +00:00
parent e170edc52c
commit 8e019f3ae0
2 changed files with 55 additions and 40 deletions

View File

@ -23,7 +23,22 @@
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* 2. Redistributions in binary form mmaven-2.0.9" -Didea.launcher.port=7538 "-Didea.launcher.bin.path=C:\Program Files\JetBrains\IntelliJ IDEA 8.1\bin" -Dfile.encoding=windows-1252 -classpath "C:\Program Files\Apache Software Foundation\apache-maven-2.0.9\boot\classworlds-1.1.jar;C:\Program Files\JetBrains\IntelliJ IDEA 8.1\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain org.codehaus.classworlds.Launcher --no-plugin-registry --fail-fast --no-plugin-updates --strict-checksums -f D:\Android\smali\pom.xml compile
+ Enabling strict checksum verification on all artifact downloads.
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Unnamed - smali:smali:jar:1.0
[INFO] task-segment: [compile]
[INFO] ------------------------------------------------------------------------
[INFO] [antlr3:antlr {execution: smali}]
[INFO] ANTLR: Processing source directory D:\Android\smali\src\main\antlr3
ANTLR Parser Generator Version 3.1.3 Mar 17, 2009 19:23:44
org\JesusFreke\smali\smali.g
[INFO] [antlr3:antlr {execution: smaliTreeWalker}]
[INFO] ANTLR: Processing source directory D:\Android\smali\src\main\antlr3
ANTLR Parser Generator Version 3.1.3 Mar 17, 2009 19:23:44
org\JesusFreke\smali\smaliTreeWalker.g
[INFO] [resources:resources]ust reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote products
@ -233,25 +248,25 @@ instruction
INSTRUCTION_NAME_FORMAT11x REGISTER
-> ^(I_STATEMENT_FORMAT11x[$start, "I_STATEMENT_FORMAT11x"] INSTRUCTION_NAME_FORMAT11x REGISTER)
| //e.g. move v1 v2
INSTRUCTION_NAME_FORMAT12x REGISTER REGISTER
INSTRUCTION_NAME_FORMAT12x REGISTER ',' REGISTER
-> ^(I_STATEMENT_FORMAT12x[$start, "I_STATEMENT_FORMAT12x"] INSTRUCTION_NAME_FORMAT12x REGISTER REGISTER)
| //e.g. sget_object v0 java/lang/System/out LJava/io/PrintStream;
INSTRUCTION_NAME_FORMAT21c_FIELD REGISTER full_field_name_and_type
INSTRUCTION_NAME_FORMAT21c_FIELD REGISTER ',' full_field_name_and_type
-> ^(I_STATEMENT_FORMAT21c_FIELD[$start, "I_STATEMENT_FORMAT21c_FIELD"] INSTRUCTION_NAME_FORMAT21c_FIELD REGISTER full_field_name_and_type)
| //e.g. const-string v1 "Hello World!"
INSTRUCTION_NAME_FORMAT21c_STRING REGISTER STRING_LITERAL
INSTRUCTION_NAME_FORMAT21c_STRING REGISTER ',' STRING_LITERAL
-> ^(I_STATEMENT_FORMAT21c_STRING[$start, "I_STATEMENT_FORMAT21c_STRING"] INSTRUCTION_NAME_FORMAT21c_STRING REGISTER STRING_LITERAL)
| //e.g. const-class v2 org/JesusFreke/HelloWorld2/HelloWorld2
INSTRUCTION_NAME_FORMAT21c_TYPE REGISTER class_or_array_type_descriptor
INSTRUCTION_NAME_FORMAT21c_TYPE REGISTER ',' class_or_array_type_descriptor
-> ^(I_STATEMENT_FORMAT21c_TYPE[$start, "I_STATEMENT_FORMAT21c"] INSTRUCTION_NAME_FORMAT21c_TYPE REGISTER class_or_array_type_descriptor)
| //e.g. iput-object v1 v0 org/JesusFreke/HelloWorld2/HelloWorld2.helloWorld Ljava/lang/String;
INSTRUCTION_NAME_FORMAT22c_FIELD REGISTER REGISTER full_field_name_and_type
INSTRUCTION_NAME_FORMAT22c_FIELD REGISTER ',' REGISTER ',' full_field_name_and_type
-> ^(I_STATEMENT_FORMAT22c_FIELD[$start, "I_INSTANCE_FIELD_STATEMENT"] INSTRUCTION_NAME_FORMAT22c_FIELD REGISTER REGISTER full_field_name_and_type)
| //e.g. invoke-virtual {v0,v1} java/io/PrintStream/print(Ljava/lang/Stream;)V
INSTRUCTION_NAME_FORMAT35c_METHOD '{' register_list '}' full_method_name_and_prototype
INSTRUCTION_NAME_FORMAT35c_METHOD '{' register_list '}' ',' full_method_name_and_prototype
-> ^(I_STATEMENT_FORMAT35c_METHOD[$start, "I_STATEMENT_FORMAT35c_METHOD"] INSTRUCTION_NAME_FORMAT35c_METHOD register_list full_method_name_and_prototype)
| //e.g. invoke-virtual/range {v25..v26} java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
INSTRUCTION_NAME_FORMAT3rc_METHOD '{' register_range '}' full_method_name_and_prototype
INSTRUCTION_NAME_FORMAT3rc_METHOD '{' register_range '}' ',' full_method_name_and_prototype
-> ^(I_STATEMENT_FORMAT3rc_METHOD[$start, "I_STATEMENT_FORMAT3rc_METHOD"] INSTRUCTION_NAME_FORMAT3rc_METHOD register_range full_method_name_and_prototype)
;

View File

@ -9,18 +9,18 @@
.method static constructor <clinit>()V
.registers 1
const-string v0 "Static Hello World!"
sput-object v0 org/JesusFreke/HelloWorld2/HelloWorld2.helloWorldStatic Ljava/lang/String;
const-string v0, "Static Hello World!"
sput-object v0, org/JesusFreke/HelloWorld2/HelloWorld2.helloWorldStatic Ljava/lang/String;
return-void
.end method
.method public constructor <init>()V
.registers 2
invoke-direct {v1} android/app/Activity.<init>()V
invoke-direct {v1}, android/app/Activity.<init>()V
const-string v0 "Hello World!"
iput-object v0 v1 org/JesusFreke/HelloWorld2/HelloWorld2.helloWorld Ljava/lang/String;
const-string v0, "Hello World!"
iput-object v0, v1, org/JesusFreke/HelloWorld2/HelloWorld2.helloWorld Ljava/lang/String;
return-void
.end method
@ -28,73 +28,73 @@
.method public onCreate(Landroid/os/Bundle;)V
.registers 6
invoke-super {v4,v5} android/app/Activity.onCreate(Landroid/os/Bundle;)V
invoke-super {v4,v5}, android/app/Activity.onCreate(Landroid/os/Bundle;)V
const-string v3 "\n"
const-string v3, "\n"
new-instance v0 Landroid/widget/TextView;
invoke-direct {v0,v4} android/widget/TextView.<init>(Landroid/content/Context;)V
new-instance v0, Landroid/widget/TextView;
invoke-direct {v0,v4}, android/widget/TextView.<init>(Landroid/content/Context;)V
iget-object v1 v4 org/JesusFreke/HelloWorld2/HelloWorld2.helloWorld Ljava/lang/String;
iget-object v1, v4, org/JesusFreke/HelloWorld2/HelloWorld2.helloWorld Ljava/lang/String;
invoke-virtual {v1, v3} java/lang/String.concat(Ljava/lang/String;)Ljava/lang/String;
invoke-virtual {v1, v3}, java/lang/String.concat(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
sget-object v2 org/JesusFreke/HelloWorld2/HelloWorld2.helloWorldStatic Ljava/lang/String;
invoke-virtual {v1, v2} java/lang/String.concat(Ljava/lang/String;)Ljava/lang/String;
sget-object v2, org/JesusFreke/HelloWorld2/HelloWorld2.helloWorldStatic Ljava/lang/String;
invoke-virtual {v1, v2}, java/lang/String.concat(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
invoke-virtual {v1, v3} java/lang/String.concat(Ljava/lang/String;)Ljava/lang/String;
invoke-virtual {v1, v3}, java/lang/String.concat(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
sget-object v2 org/JesusFreke/HelloWorld2/HelloWorld2.helloWorldStatic2 Ljava/lang/String;
invoke-virtual/range {v1 .. v2} java/lang/String.concat(Ljava/lang/String;)Ljava/lang/String;
sget-object v2, org/JesusFreke/HelloWorld2/HelloWorld2.helloWorldStatic2 Ljava/lang/String;
invoke-virtual/range {v1 .. v2}, java/lang/String.concat(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
invoke-virtual {v1, v3} java/lang/String.concat(Ljava/lang/String;)Ljava/lang/String;
invoke-virtual {v1, v3}, java/lang/String.concat(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
const-class v2 Lorg/JesusFreke/HelloWorld2/HelloWorld2;
invoke-virtual {v2} java/lang/Class.getName()Ljava/lang/String;
const-class v2, Lorg/JesusFreke/HelloWorld2/HelloWorld2;
invoke-virtual {v2}, java/lang/Class.getName()Ljava/lang/String;
move-result-object v2
invoke-virtual/range {v1 .. v2} java/lang/String.concat(Ljava/lang/String;)Ljava/lang/String;
invoke-virtual/range {v1 .. v2}, java/lang/String.concat(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
invoke-virtual {v1, v3} java/lang/String.concat(Ljava/lang/String;)Ljava/lang/String;
invoke-virtual {v1, v3}, java/lang/String.concat(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
const-class v2 [Lorg/JesusFreke/HelloWorld2/HelloWorld2;
invoke-virtual {v2} java/lang/Class.getName()Ljava/lang/String;
const-class v2, [Lorg/JesusFreke/HelloWorld2/HelloWorld2;
invoke-virtual {v2}, java/lang/Class.getName()Ljava/lang/String;
move-result-object v2
invoke-virtual/range {v1 .. v2} java/lang/String.concat(Ljava/lang/String;)Ljava/lang/String;
invoke-virtual/range {v1 .. v2}, java/lang/String.concat(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
invoke-virtual {v1, v3} java/lang/String.concat(Ljava/lang/String;)Ljava/lang/String;
invoke-virtual {v1, v3}, java/lang/String.concat(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
const-class v2 [I
invoke-virtual {v2} java/lang/Class.getName()Ljava/lang/String;
const-class v2, [I
invoke-virtual {v2}, java/lang/Class.getName()Ljava/lang/String;
move-result-object v2
invoke-virtual/range {v1 .. v2} java/lang/String.concat(Ljava/lang/String;)Ljava/lang/String;
invoke-virtual/range {v1 .. v2}, java/lang/String.concat(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
move-object v2 v1
move-object v2, v1
check-cast v4 Landroid/app/Activity;
check-cast v4, Landroid/app/Activity;
invoke-virtual {v0,v2} android/widget/TextView.setText(Ljava/lang/CharSequence;)V
invoke-virtual {v4,v0} org/JesusFreke/HelloWorld2/HelloWorld2.setContentView(Landroid/view/View;)V
invoke-virtual {v0,v2}, android/widget/TextView.setText(Ljava/lang/CharSequence;)V
invoke-virtual {v4,v0}, org/JesusFreke/HelloWorld2/HelloWorld2.setContentView(Landroid/view/View;)V
return-void
.end method