Forum: PC-Programmierung Java Frage -> Variablen


von timo (Gast)


Lesenswert?

Hi,

eins vorweg, ich kann kein Java aber
ich muss eine kleine Änderung an einer Android App vornehmen:

Dort gibt es folgende Zeile:
1
invoke-static {v3, v7, v7, v7}, Landroid/graphics/Color;->argb(IIII)I

Die Variablen v3 und v7 übergeben der Funktion?? die Werte Alpha, R, G, 
B

Das ganze stellt eine Farbfilteranwendung dar.

Allerdings möchte ich meine eigenen fixen Werte reinschreiben.
1
invoke-static {v3, 0x16, v7, v7}
zum Beispiel geht nicht.
Die Zahl in Anführungsstrichen, Klammern und alles andere funktioniert 
nicht.
Also muss ich mit Variablen arbeiten.
Unter Java funktioniert das doch normal mit z.b. int Variable.

Dort im Code finde ich sowas nicht vor, nur eine Zeilen wie:
1
const/high16 v3, 0x437f

mache ich mir selber eine Zeile wie z.B.
1
const/high16 v9, 0x437f

bekomme ich schon einen Compilerfehler.

Wie funktioniert das ganze?

Danke

von timo (Gast)


Lesenswert?

Sorry, ich bekomme keinen Compilerfehler, sondern die Anwendung stürzt 
ab

von Maik M. (myco)


Lesenswert?

schau dir mal kurz vor der Zeile:
const/high16 v3, 0x437f

an, was da bei
.locals XYZ

für ein Wert anstelle von XYZ steht. den erhöhst du im 1, und dann 
kannst du auch deine Zeile:
const/high16 v9, 0x437f

einfügen. Vorausgesetzt v9 ist neu und unverwendet.

von Arc N. (arc)


Lesenswert?

Das ist kein Java sondern das was die Dalvik Assembler/Disassembler 
verarbeiten/erzeugen z.B. http://code.google.com/p/smali/ (Dalvik 
Bytecode)
http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html
Syntax müsste in dem Fall etwas wie const v7, #12345678 sein

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.