Справка по Smali
1 | Регистры vA представляет собой 4-битный регистр с диапазоном значений v0 - v15 vAA представляет собой 8-битный регистр с диапазоном значений v0 - v255 vAAAA представляет собой 16-битный регистр с диапазоном значений v0 - v65535 |
2 | Литеральные значения Используются 0xF, 0xFF и т.д. для представления литеральных значений. Подобно регистрам, число F используется для представления диапазона значений, например: Диапазон значений 0xF представлен [-0x8, 0x7] Диапазон значений 0xFF представлен [-0x80, 0x7F] |
3 | Примитивные типы данных V - void, Z - boolean, B - byte C - char, S - short, I - int J - long, F - float, D - double void: может использоваться только для типов возврата boolean: хранит значение true или false byte: хранит целое число от -128 до 127 и занимает 1 байт short: хранит целое число от -32768 до 32767 и занимает 2 байта int: хранит целое число от -2147483648 до 2147483647 и занимает 4 байта long: хранит целое число от -9223372036854775808 до 9223372036854775807 и занимает 8 байт double: хранит число с плавающей точкой от ±4.9*10³²⁴ до ±1.7976931348623157*10³⁰⁸ и занимает 8 байт. В качестве разделителя целой и дробной части в дробных литералах используется точка. float: хранит число с плавающей точкой от -3.4*10³⁸ до 3.4*10³⁸ и занимает 4 байта char: хранит одиночный символ в кодировке UTF-16 и занимает 2 байта, поэтому диапазон хранимых значений от 0 до 65535. |
4 | nop Нет действий. |
5 | move vA, vB Перемещает значение регистра vB в регистр vA. |
6 | move/from16 vAA, vBBBB Перемещает значение регистра vBBBB в регистр vAA. |
7 | move/16 vAAAA, vBBBB Перемещает значение регистра vBBBB в регистр vAAAA. |
8 | move-wide vA, vB Перемещает long/double значение пары регистров (vB, vB+1) в пару регистров vA, vA+1. |
9 | move-wide/from16 vAA, vBBBB Перемещает long/double значение пары регистров (vBBBB, vBBBB+1) в пару регистров vAA, vAA+1. |
10 | move-wide/16 vAAAA, vBBBB Перемещает long/double значение пары регистров (vBBBB, vBBBB+1) в пару регистров vAAAA, vAAAA+1. |
11 | move-object vA, vB Перемещает ссылку на объект из регистра vB в регистр vA. |
12 | move-object/from16 vAA, vBBBB Перемещает ссылку на объект из регистра vBBBB в регистр vAA. |
13 | move-object/16 vAAAA, vBBBB Перемещает ссылку на объект из регистра vBBBB в регистр vAAAA. |
14 | move-result vAA Перемещает значение, возвращаемое вызванным перед этим методом в регистр vAA. |
15 | move-result-wide vAA Перемещает long/double значение, возвращаемое вызванным перед этим методом в пару регистров vAA, vAA+1. |
16 | move-result-object vAA Перемещает ссылку на объект, возвращаемую вызванным перед этим методом в регистр vAA. |
17 | move-exception vAA Перемещает ссылку на исключаемый объект, выданную в процессе вызова (при выполнении) метода в регистр vAA. |
18 | return-void Возврат без возвращаемого значения. |
19 | return vAA Возврат с возвращением значения из регистра vAA. |
20 | return-wide vAA Возврат с возвращением double/long значения в пару регистров vAA, vAA+1. |
21 | return-object vAA Возврат с возвращением значения ссылки на объект из регистра vAA. |
22 | const/4 vA, 0xF Помещает 4-битную константу в регистр vA. |
23 | const/16 vAA, 0xFFFF Помещает 16-битную константу в регистр vAA. |
24 | const vAA, 0xFFFFFFFF Помещает integer (целое) константу в регистр vAA. |
25 | const/high16 vAA, 0xFFFF Помещает 16-битную константу в верхние биты регистра vAA. Используется для инициализации float (с плавающей точкой) значений. |
26 | const-wide/16 vAA, 0xFFFF Помещает 16-битную integer (целое) константу в пару регистров vAA, vAA+1, преобразуя integer (целое) константу в long (целое) константу. |
27 | const-wide/32 vAA, 0xFFFFFFFF Помещает 32-битную integer (целое) константу в пару регистров vAA, vAA+1, преобразуя integer (целое) константу в long (целое) константу. |
28 | const-wide vAA, #FFFFFFFFFFFFFFFF Помещает 64-битную константу в пару регистров vAA, vAA+1. |
29 | const-wide/high16 vAA, 0xFFFF Помещает 16-битную константу в верхние 16-бит пары регистров vAA, vAA+1. Используется для инициализации double (с плавающей точкой) значений. |
30 | const-string vAA, string Помещает ссылку на указанную строку в регистр vAA. |
31 | const-string/jumbo vAA, string (32-bit index) Помещает ссылку на указанную строку в регистр vAA. |
32 | const-class vAA, type Помещает ссылку на string константу (строку), идентифицированную с помощью string_id в регистр vAA. |
33 | monitor-enter vAA Получает монитор объекта, на который ссылается регистр vAA. |
34 | monitor-exit vAA Освобождает монитор объекта, на который ссылается регистр vAA. |
35 | check-cast vAA, type Проверяет может ли ссылка на объект, содержащаяся в регистре vAA, быть приведена к классу, идентифицированному с помощью type_id. Выдает ClassCastException если не может, в противном случае продолжает выполнение. |
36 | instance-of vA, vB, type Проверяет является ли содержимое регистра vB экземпляром класса, идентифицированному с помощью type_id. Устанавливает регистр vA в non-zero если является, 0 если нет. vA = vB instanceOf type ? 1 : 0 |
37 | array-length vA, vB Определяет количество элементов массива из регистра vB и помещает значение в регистр vA. vA = vB.length |
38 | new-instance vAA, type Создает экземпляр типа объекта и помещает ссылку на созданный экземпляр в регистр vAA. |
39 | new-array vA, vB, type Создает новый массив переменных type_id типа размером регистра vB элементов и помещает ссылку на массив в регистр vA. |
40 | filled-new-array {vC, vD, vE, vF, vG}, type Создает новый массив данных типа type_id и заполняет его параметрами (то есть никаких массивов long/double, но допустимы ссылочные типы). Ссылка на вновь созданный массив может быть получена с помощью инструкции move-result-object, следующей сразу за этой инструкцией (если она будет использоваться). |
41 | filled-new-array/range {vCCCC .. vNNNN}, type Создает новый массив данных типа type_id и заполняет его диапазоном параметров (то есть никаких массивов long/double, но допустимы ссылочные типы). Ссылка на вновь созданный массив может быть получена с помощью инструкции move-result-object, следующей сразу за этой инструкцией (если она будет использоваться). |
42 | fill-array-data vAA, :array Заполняет массив, ссылка на который содержится в регистре vAA статическими данными (static data). Расположение данных - сумма позиции настоящей инструкции и смещения. |
43 | throw vAA Выдает объект исключения. Ссылка на объект исключения в регистре vAA. |
44 | goto :goto_XX Безусловный переход на short (целое) 8-битное смещение. |
45 | goto/16 :goto_XXXX Безусловный переход на 16-битное смещение. |
46 | goto/32 :goto_XXXXXXXX Безусловный переход на 32-битное смещение. |
47 | packed-switch vAA, :pswitch_data Реализует оператор Switch, когда управляющие константы близки друг к другу (идут подряд). Инструкция использует индексную таблицу. Смещение инструкции для конкретного случая определяется по индексу vAA. Если индекс vAA выходит за пределы таблицы, выполнение продолжается по следующей инструкции (вариант по умолчанию). |
48 | sparse-switch vAA, :sswitch_data Реализует оператор Switch в случае разреженной таблицы. Инструкция использует таблицу, в которой задаются смещения для каждой постоянной. Если совпадений в таблице не найдено, то выполняется следующая инструкция (случай по умолчанию). |
49 | cmpl-float vAA, vBB, vCC Сравнивает float (с плавающей точкой) значения в vBB и vCC и помещает в регистр vAA integer (целое) значение: vAA = vBB < vCC ? да: 1, нет: -1, равно: 0 |
50 | cmpg-float vAA, vBB, vCC Сравнивает float (с плавающей точкой) значения в vBB и vCC и помещает в регистр vAA integer (целое) значение: vAA = vBB < vCC ? да: 1, нет: -1, равно: 0 |
51 | cmpl-double vAA, vBB, vCC Сравнивает double (с плавающей точкой) значения в vBB и vCC и помещает в регистр vAA integer (целое) значение: vAA = (vBB, vBB+1) < (vCC, vCC+1) ? y да: 1, нет: -1, равно: 0 |
52 | cmpg-double vAA, vBB, vCC Сравнивает double (с плавающей точкой) значения в vBB и vCC и помещает в регистр vAA integer (целое) значение: vAA = (vBB, vBB+1) > (vCC, vCC+1) ? да: 1, нет: -1, равно: 0 |
53 | cmp-long vAA, vBB, vCC Сравнивает long (целое) значения в vBB и vCC и помещает в регистр vAA integer (целое) значение: vAA = (vBB, vBB+1) > (vCC, vCC+1) ? да: 1, нет: -1, равно: 0 |
54 | if-eq vA, vB, :cond_XXXX Переходит на указанную метку, если vA == vB. vA и vB содержат integer (целое) значения. (eq - это сокращение от Equals/Равно) |
55 | if-ne vA, vB, :cond_XXXX Переходит на указанную метку, если vA != vB. vA и vB содержат integer (целое) значения. (ne - это сокращение от Not Equals/Не равно) |
56 | if-lt vA, vB, :cond_XXXX Переходит на указанную метку, если vA < vB. vA и vB содержат integer (целое) значения. (lt - это сокращение от Less Than/Меньше чем) |
57 | if-le vA, vB, :cond_XXXX Переходит на указанную метку, если vA <= vB. vA и vB содержат integer (целое) значения. (le - это сокращение от Less than or Equal/Меньше или равно) |
58 | if-gt vA, vB, :cond_XXXX Переходит на указанную метку, если vA > vB. vA и vB содержат integer (целое) значения. (gt - это сокращение от Greater Than/Больше чем) |
59 | if-ge vA, vB, :cond_XXXX Переходит на указанную метку, если vA >= vB. vA и vB содержат integer (целое) значения. (ge - это сокращение от Greater than or Equal/Больше или равно) |
60 | if-eqz vAA, :cond_XXXX Переходит на указанную метку, если vAA == 0. vAA содержит integer (целое) значение. (eqz - это сокращение от Equals to Zero/Равно нулю) |
61 | if-nez vAA, :cond_XXXX Переходит на указанную метку, если vAA != 0. vAA содержит integer (целое) значение. (nez - это сокращение от Not Equals to Zero/Не равно нулю) |
62 | if-ltz vAA, :cond_XXXX Переходит на указанную метку, если vAA < 0. vAA содержит integer (целое) значение. (ltz - это сокращение от Less Than Zero/Меньше нуля) |
63 | if-lez vAA, :cond_XXXX Переходит на указанную метку, если vAA <= 0. vAA содержит integer (целое) значение. (lez - это сокращение от Less than or Equal to Zero/Меньше или равно нулю) |
64 | if-gtz vAA, :cond_XXXX Переходит на указанную метку, если vAA > 0. vAA содержит integer (целое) значение. (gtz - это сокращение от Greater Than Zero/Больше нуля) |
65 | if-gez vAA, :cond_XXXX Переходит на указанную метку, если vAA >= 0. vAA содержит integer (целое) значение. (gez - это сокращение от Greater than or Equal to Zero/Больше или равно нулю) |
66 | aget vAA, vBB, vCC Получает по индексу, содержащемуся в vCC, из массива, ссылка на который содержится в vBB, integer (целое) значение и помещает его в регистр vAA. vAA = vBB[vCC] |
67 | aget-wide vAA, vBB, vCC Получает по индексу, содержащемуся в vCC, из массива, ссылка на который содержится в vBB, double/long значение и помещает его в пару регистров vAA, vAA+1. (vAA, vAA+1) = vBB[vCC] |
68 | aget-object vAA, vBB, vCC Получает по индексу, содержащемуся в vCC, из массива, ссылка на который содержится в vBB, ссылку на объект и помещает ее в регистр vAA. vAA = vBB[vCC] |
69 | aget-boolean vAA, vBB, vCC Получает по индексу, содержащемуся в vCC, из массива, ссылка на который содержится в vBB, boolean значение и помещает его в регистр vAA. vAA = vBB[vCC] |
70 | aget-byte vAA, vBB, vCC Получает по индексу, содержащемуся в vCC, из массива, ссылка на который содержится в vBB, byte (целое) значение и помещает его в регистр vAA. vAA = vBB[vCC] |
71 | aget-char vAA, vBB, vCC Получает по индексу, содержащемуся в vCC, из массива, ссылка на который содержится в vBB, char значение и помещает его в регистр vAA. vAA = vBB[vCC] |
72 | aget-short vAA, vBB, vCC Получает по индексу, содержащемуся в vCC, из массива, ссылка на который содержится в vBB, short (целое) значение и помещает его в регистр vAA. vAA = vBB[vCC] |
73 | aput vAA, vBB, vCC Помещает integer (целое) значение из vAA в массив, ссылка на который содержится в vBB, элементом с регистром vCC. vBB[vCC] = vAA |
74 | aput-wide vAA, vBB, vCC Помещает double/long значение из пары регистров vAA, vAA+1 в массив, ссылка на который содержится в vBB, элементом с регистром vCC. vBB[vCC] = (vAA, vAA+1) |
75 | aput-object vAA, vBB, vCC Помещает ссылку на объект из vAA в массив, ссылка на который содержится в vBB, элементом с регистром vCC. vBB[vCC] = vAA |
76 | aput-boolean vAA, vBB, vCC Помещает boolean значение из vAA в массив, ссылка на который содержится в vBB, элементом с регистром vCC. vBB[vCC] = vAA |
77 | aput-byte vAA, vBB, vCC Помещает byte (целое) значение из vAA в массив, ссылка на который содержится в vBB, элементом с регистром vCC. vBB[vCC] = vAA |
78 | aput-char vAA, vBB, vCC Помещает char (символ) значение из vAA в массив, ссылка на который содержится в vBB, элементом с регистром vCC. vBB[vCC] = vAA |
79 | aput-short vAA, vBB, vCC Помещает short (целое) значение из vAA в массив, ссылка на который содержится в vBB, элементом с регистром vCC. vBB[vCC] = vAA |
80 | iget vA, vB, fields Считывает значение из поля (instance field) и помещает его в регистр vA. Ссылка на класс, содержащий данное поле, находится в регистре vB. vA = vB.field |
81 | iget-wide vA, vB, fields Считывает double/long значение из поля (instance field) и помещает его в пару регистров (vA, vA+1). Ссылка на класс, содержащий данное поле, находится в регистре vB. (vA, vA+1) = vB.field |
82 | iget-object vA, vB, fields Считывает ссылку на объект из поля (instance field) и помещает его в регистр vA. Ссылка на класс, содержащий данное поле, находится в регистре vB. vA = vB.field |
83 | iget-boolean vA, vB, fields Считывает boolean значение из поля (instance field) и помещает его в регистр vA. Ссылка на класс, содержащий данное поле, находится в регистре vB. vA = vB.field |
84 | iget-byte vA, vB, field Считывает byte (целое) значение из поля (instance field) и помещает его в регистр vA. Ссылка на класс, содержащий данное поле, находится в регистре vB. vA = vB.field |
85 | iget-char vA, vB, field Считывает char (символ) значение из поля (instance field) и помещает его в регистр vA. Ссылка на класс, содержащий данное поле, находится в регистре vB. vA = vB.field |
86 | iget-short vA, vB, fields Считывает short (целое) значение из поля (instance field) и помещает его в регистр vA. Ссылка на класс, содержащий данное поле, находится в регистре vB. vA = vB.field |
87 | iput vA, vB, fields Помещает значение из регистра vA в поле (instance field). Ссылка на класс, содержащий данное поле, находится в регистре vB. vB.field = vA |
88 | iput-wide vA, vB, fields Помещает double/long значение из пары регистров (vA, vA+1) в поле (instance field). Ссылка на класс, содержащий данное поле, находится в регистре vB. vB.field = (vA, vA+1) |
89 | iput-object vA, vB, fields Помещает ссылку на объект из регистра vA в поле (instance field). Ссылка на класс, содержащий данное поле, находится в регистре vB. vB.field = vA |
90 | iput-boolean vA, vB, fields Помещает boolean значение из регистра vA в поле (instance field). Ссылка на класс, содержащий данное поле, находится в регистре vB. vB.field = vA |
91 | iput-byte vA, vB, fields Устанавливает byte (целое) значение указанного логического поля в экземпляре, на который ссылается регистр vB, равный значению регистра vA, то есть: vB.field = vA |
92 | iput-char vA, vB, fields Устанавливает char (символ) значение указанного логического поля в экземпляре, на который ссылается регистр vB, равный значению регистра vA, то есть: vB.field = vA |
93 | iput-short vA, vB, fields Устанавливает short (целое) значение указанного логического поля в экземпляре, на который ссылается регистр vB, равный значению регистра vA, то есть: vB.field = vA |
94 | sget vAA, static field Считывает значение из поля (static field) и помещает его в регистр vAA. Регистр, содержащий ссылку на класс, содержащий данное поле, не используется. |
95 | sget-wide vAA, static field Считывает double/long значение из поля (static field) и помещает его в пару регистров vAA, vAA+1. Регистр, содержащий ссылку на класс, содержащий данное поле, не используется. |
96 | sget-object vAA, static field Считывает ссылку на объект из поля (static field) и помещает его в регистр vAA. Регистр, содержащий ссылку на класс, содержащий данное поле, не используется. |
97 | sget-boolean vAA, static field Считывает boolean значение из поля (static field) и помещает его в регистр vAA. Регистр, содержащий ссылку на класс, содержащий данное поле, не используется. |
98 | sget-byte vAA, static field Считывает byte (целое) значение из поля (static field) и помещает его в регистр vAA. Регистр, содержащий ссылку на класс, содержащий данное поле, не используется. |
99 | sget-char vAA, static field Считывает char (символ) значение из поля (static field) и помещает его в регистр vAA. Регистр, содержащий ссылку на класс, содержащий данное поле, не используется. |
100 | sget-short vAA, static field Считывает short (целое) значение из поля (static field) и помещает его в регистр vAA. Регистр, содержащий ссылку на класс, содержащий данное поле, не используется. |
101 | sput vAA, static field Помещает значение из регистра vAA в поле (static field). Регистр, содержащий ссылку на класс, содержащий данное поле, не используется. |
102 | sput-wide vAA, static field Помещает double/long значение из пары регистров vAA, vAA+1 в поле (static field). Регистр, содержащий ссылку на класс, содержащий данное поле, не используется. |
103 | sput-object vAA, static field Помещает ссылку на объект из регистра vAA в поле (static field). Регистр, содержащий ссылку на класс, содержащий данное поле, не используется.. |
104 | sput-boolean vAA, static field Помещает boolean значение из регистра vAA в поле (static field). Регистр, содержащий ссылку на класс, содержащий данное поле, не используется. |
105 | sput-byte vAA, static field Помещает byte (целое) значение из регистра vAA в поле (static field). Регистр, содержащий ссылку на класс, содержащий данное поле, не используется. |
106 | sput-char vAA, static field Помещает char (символ) значение из регистра vAA в поле (static field). Регистр, содержащий ссылку на класс, содержащий данное поле, не используется. |
107 | sput-short vAA, static field Помещает short (целое) значение из регистра vAA в поле (static field). Регистр, содержащий ссылку на класс, содержащий данное поле, не используется. |
108 | invoke-virtual {vC, vD, vE, vF, vG}, method Вызывает (запускает) виртуальный метод с параметрами. Параметры указываются в фигурных скобках. Первый параметр (регистр v2) содержит ссылку на класс, содержащий вызываемый метод, второй параметр (содержимое регистра v3) передается в вызываемый метод. |
109 | invoke-super {vC, vD, vE, vF, vG}, method Вызывает (запускает) виртуальный метод с параметрами непосредственно родительского класса. |
110 | invoke-direct {vC, vD, vE, vF, vG}, method Вызывает (запускает) метод с параметрами без разрешений виртуального метода. |
111 | invoke-static {vC, vD, vE, vF, vG}, method Вызывает (запускает) статический метод с параметрами. Параметры указываются в фигурных скобках. Параметр (содержимое регистра v3) передается в вызываемый метод. Класс, содержащий вызываемый метод указывается после фигурных скобок. |
112 | invoke-interface {vC, vD, vE, vF, vG}, method Вызывает (запускает) interface метод с параметрами. |
113 | invoke-virtual/range {vCCCC .. vNNNN}, method Вызывает (запускает) виртуальный метод с параметрами, но параметры должны содержаться в регистрах с номерами по порядку. |
114 | invoke-super/range {vCCCC .. vNNNN}, method Вызывает (запускает) виртуальный метод с параметрами непосредственно родительского класса, но параметры должны содержаться в регистрах с номерами по порядку. |
115 | invoke-direct/range {vCCCC .. vNNNN}, method Вызывает (запускает) метод с параметрами без разрешений виртуального метода, но параметры должны содержаться в регистрах с номерами по порядку. |
116 | invoke-static/range {vCCCC .. vNNNN}, method Вызывает (запускает) статический метод с параметрами, но параметры должны содержаться в регистрах с номерами по порядку. |
117 | invoke-interface/range {vCCCC .. vNNNN}, method Вызывает (запускает) interface метод с параметрами, но параметры должны содержаться в регистрах с номерами по порядку. |
118 | neg-int vA, vB Вычисляет vA = -vB для значений типа integer (целое). |
119 | not-int vA, vB Вычисляет vA = ~vB для значений типа integer (целое). vA = ~vB |
120 | neg-long vA, vB Вычисляет (vA, vA+1) = -(vB, vB+1) для значений типа long (целое). |
121 | not-long vA, vB Вычисляет (vA, vA+1) = ~(vB, vB+1) для значений типа long (целое). |
122 | neg-float vA, vB Вычисляет vA = -vB для значений типа float (с плавающей точкой). |
123 | neg-double vA, vB Вычисляет (vA, vA+1) = -(vB, vB+1) для значений типа double (с плавающей точкой). |
124 | int-to-long vA, vB Конвертирует integer (целое) из vB в long (целое) и сохраняет его в пару регистров vA, vA+1. (vA, vA+1) = (long) vB |
125 | int-to-float vA, vB Конвертирует integer (целое) из vB в float (с плавающей точкой) и сохраняет его в регистр vA. vA = (float) vB |
126 | int-to-double vA, vB Конвертирует integer (целое) из vB в double (с плавающей точкой) и сохраняет его в пару регистров vA, vA+1. (vA, vA+1) = (double) vB |
127 | long-to-int vA, vB Конвертирует long (целое) значение из vB, vB+1 в integer (целое) и сохраняет его в регистр vA. vA = (int) (vB, vB+1) |
128 | long-to-float vA, vB Конвертирует long (целое) значение из vB, vB+1 в float (с плавающей точкой) и сохраняет его в регистр vA. vA = (float) (vB, vB+1) |
129 | long-to-double vA, vB Конвертирует long (целое) значение из vB, vB+1 в double (с плавающей точкой) и сохраняет его в пару регистров vA, vA+1. (vA, vA+1) = (double) (vB, vB+1) |
130 | float-to-int vA, vB Конвертирует float (с плавающей точкой) значение из vB в integer (целое) значение и сохраняет его в регистр vA. vA = (int) vB |
131 | float-to-long vA, vB Конвертирует float (с плавающей точкой) значение из vB в long (целое) значение и сохраняет его в пару регистров vA, vA+1. (vA, vA+1) = (long) vB |
132 | float-to-double vA, vB Конвертирует float (с плавающей точкой) значение из vB в double (с плавающей точкой) значение и сохраняет его в пару регистров vA, vA+1. (vA, vA+1) = (double) vB |
133 | double-to-int vA, vB Конвертирует double (с плавающей точкой) значение из vB, vB+1 в integer (целое) значение и сохраняет его в регистр vA. vA = (int) (vB, vB+1) |
134 | double-to-long vA, vB Конвертирует double (с плавающей точкой) значение из vB, vB+1 в long (целое) значение и сохраняет его в пару регистров vA, vA+1. (vA, vA+1) = (long) (vB, vB+1) |
135 | double-to-float vA, vB Конвертирует double (с плавающей точкой) значение из vB, vB+1 в float (с плавающей точкой) значение и сохраняет его в регистр vA. vA = (float) (vB, vB+1) |
136 | int-to-byte vA, vB Конвертирует integer (целое) значение из vB в byte (целое) значение и сохраняет его в регистр vA. vA = (byte) vB |
137 | int-to-char vA, vB Конвертирует integer (целое) значение из vB в char (символ) значение и сохраняет его в регистр vA. vA = (char) vB |
138 | int-to-short vA, vB Конвертирует integer (целое) значение из vB в short (целое) значение и сохраняет его в регистр vA. vA = (short) vB |
139 | add-int vAA, vBB, vCC Вычисляет vBB + vCC и сохраняет результат в регистр vAA. Все значения integer (целое). vAA = vBB + vCC |
140 | sub-int vAA, vBB, vCC Вычисляет vBB - vCC и сохраняет результат в регистр vAA. Все значения integer (целое). vAA = vBB - vCC |
141 | mul-int vAA, vBB, vCC Вычисляет vBB * vCC и сохраняет результат в регистр vAA. Все значения integer (целое). vAA = vBB * vCC |
142 | div-int vAA, vBB, vCC Вычисляет vBB / vCC и сохраняет результат в регистр vAA. Все значения integer (целое). vAA = vBB / vCC |
143 | rem-int vAA, vBB, vCC Вычисляет vBB % vCC и сохраняет результат в регистр vAA. Все значения integer (целое). vAA = vBB % vCC |
144 | and-int vAA, vBB, vCC Вычисляет vBB & vCC (логическое И) и сохраняет результат в регистр vAA. Все значения integer (целое). vAA = vBB & vCC |
145 | or-int vAA, vBB, vCC Вычисляет vBB | vCC (логическое ИЛИ) и сохраняет результат в регистр vAA. Все значения integer (целое). vAA = vBB | vCC |
146 | xor-int vAA, vBB, vCC Вычисляет vBB ^ vCC (исключающее ИЛИ) и сохраняет результат в регистр vAA. Все значения integer (целое). vAA = vBB ^ vCC |
147 | shl-int vAA, vBB, vCC Сдвигает vBB влево на количество разрядов, заданное vCC, и сохраняет результат в регистр vAA. Все значения integer (целое). vAA = vBB << vCC |
148 | shr-int vAA, vBB, vCC Сдвигает vBB вправо на количество разрядов, заданное vCC, и сохраняет результат в регистр vAA. Все значения integer (целое). vAA = vBB >> vCC |
149 | ushr-int vAA, vBB, vCC Сдвигает без сохранения знака vBB вправо на количество разрядов, заданное vCC, и сохраняет результат в регистр vAA. Все значения integer (целое). vAA = vBB >>> vCC |
150 | add-long vAA, vBB, vCC Вычисляет (vBB, vBB+1) + (vCC, vCC+1) и сохраняет результат в пару регистров vAA, vAA+1. Все значения long (целое). (vAA, vAA+1) = (vBB, vBB+1) + (vCC, vCC+1) |
151 | sub-long vAA, vBB, vCC Вычисляет (vBB, vBB+1) - (vCC, vCC+1) и сохраняет результат в пару регистров vAA, vAA+1. Все значения long (целое). (vAA, vAA+1) = (vBB, vBB+1) - (vCC, vCC+1) |
152 | mul-long vAA, vBB, vCC Вычисляет (vBB, vBB+1) * (vCC, vCC+1) и сохраняет результат в пару регистров vAA, vAA+1. Все значения long (целое). (vAA, vAA+1) = (vBB, vBB+1) * (vCC, vCC+1) |
153 | div-long vAA, vBB, vCC Вычисляет (vBB, vBB+1) / (vCC, vCC+1) и сохраняет результат в пару регистров vAA, vAA+1. Все значения long (целое). (vAA, vAA+1) = (vBB, vBB+1) / (vCC, vCC+1) |
154 | rem-long vAA, vBB, vCC Вычисляет (vBB, vBB+1) % (vCC, vCC+1) и сохраняет результат в пару регистров vAA, vAA+1. Все значения long (целое). (vAA, vAA+1) = (vBB, vBB+1) % (vCC, vCC+1) |
155 | and-long vAA, vBB, vCC Вычисляет (vBB, vBB+1) & (vCC, vCC+1) (логическое И) и сохраняет результат в пару регистров vAA, vAA+1. Все значения long (целое). (vAA, vAA+1) = (vBB, vBB+1) & (vCC, vCC+1) |
156 | or-long vAA, vBB, vCC Вычисляет (vBB, vBB+1) | (vCC, vCC+1) (логическое ИЛИ) и сохраняет результат в пару регистров vAA, vAA+1. Все значения long (целое). (vAA, vAA+1) = (vBB, vBB+1) | (vCC, vCC+1) |
157 | xor-long vAA, vBB, vCC Вычисляет (vBB, vBB+1) ^ (vCC, vCC+1) (исключающее И) и сохраняет результат в пару регистров vAA, vAA+1. Все значения long (целое). (vAA, vAA+1) = (vBB, vBB+1) ^ (vCC, vCC+1) |
158 | shl-long vAA, vBB, vCC Сдвигает vBB, vBB+1 влево на количество разрядов, заданное vCC, и сохраняет результат в пару регистров vAA, vAA+1. Все значения long (целое). (vAA, vAA+1) = (vBB, vBB+1) << vCC |
159 | shr-long vAA, vBB, vCC Сдвигает vBB, vBB+1 вправо на количество разрядов, заданное vCC, и сохраняет результат в пару регистров vAA, vAA+1. Все значения long (целое). (vAA, vAA+1) = (vBB, vBB+1) >> vCC |
160 | ushr-long vAA, vBB, vCC Сдвигает без сохранения знака vBB, vBB+1 вправо на количество разрядов, заданное vCC, и сохраняет результат в пару регистров vAA, vA+1. Все значения long (целое). (vAA, vAA+1) = (vBB, vBB+1) >>> vCC |
161 | add-float vAA, vBB, vCC Вычисляет vBB + vCC и сохраняет результат в регистр vAA. Все значения float (с плавающей точкой). vAA = vBB + vCC |
162 | sub-float vAA, vBB, vCC Вычисляет vBB - vCC и сохраняет результат в регистр vAA. Все значения float (с плавающей точкой). vAA = vBB - vCC |
163 | mul-float vAA, vBB, vCC Вычисляет vBB * vCC и сохраняет результат в регистр vAA. Все значения float (с плавающей точкой). vAA = vBB * vCC |
164 | div-float vAA, vBB, vCC Вычисляет vBB / vCC и сохраняет результат в регистр vAA. Все значения float (с плавающей точкой). vAA = vBB / vCC |
165 | rem-float vAA, vBB, vCC Вычисляет vBB % vCC и сохраняет результат в регистр vAA. Все значения float (с плавающей точкой). vAA = vBB % vCC |
166 | add-double vAA, vBB, vCC Вычисляет (vBB, vBB+1) + (vCC, vCC+1) и сохраняет результат в пару регистров vAA, vAA+1. Все значения double (с плавающей точкой). (vAA, vAA+1) = (vBB, vBB+1) + (vCC, vCC+1) |
167 | sub-double vAA, vBB, vCC Вычисляет (vBB, vBB+1) - (vCC, vCC+1) и сохраняет результат в пару регистров vAA, vAA+1. Все значения double (с плавающей точкой). (vAA, vAA+1) = (vBB, vBB+1) - (vCC, vCC+1) |
168 | mul-double vAA, vBB, vCC Вычисляет (vBB, vBB+1) * (vCC, vCC+1) и сохраняет результат в пару регистров vAA, vAA+1. Все значения double (с плавающей точкой). (vAA, vAA+1) = (vBB, vBB+1) * (vCC, vCC+1) |
169 | div-double vAA, vBB, vCC Вычисляет (vBB, vBB+1) / (vCC, vCC+1) и сохраняет результат в пару регистров vAA, vAA+1. Все значения double (с плавающей точкой). (vAA, vAA+1) = (vBB, vBB+1) / (vCC, vCC+1) |
170 | rem-double vAA, vBB, vCC Вычисляет (vBB, vBB+1) % (vCC, vCC+1) и сохраняет результат в пару регистров vAA, vAA+1. Все значения double (с плавающей точкой). (vAA, vAA+1) = (vBB, vBB+1) % (vCC, vCC+1) |
171 | add-int/2addr vA, vB Вычисляет vA + vB и сохраняет результат в регистр vA. Все значения integer (целое). vA = vA + vB |
172 | sub-int/2addr vA, vB Вычисляет vA - vB и сохраняет результат в регистр vA. Все значения integer (целое). vA = vA - vB |
173 | mul-int/2addr vA, vB Вычисляет vA * vB и сохраняет результат в регистр vA. Все значения integer (целое). vA = vA * vB |
174 | div-int/2addr vA, vB Вычисляет vA / vB и сохраняет результат в регистр vA. Все значения integer (целое). vA = vA / vB |
175 | rem-int/2addr vA, vB Вычисляет vA % vB и сохраняет результат в регистр vA. Все значения integer (целое). vA = vA % vB |
176 | and-int/2addr vA, vB Вычисляет vA & vB (логическое И) и сохраняет результат в регистр vA. Все значения integer (целое). vA = vA & vB |
177 | or-int/2addr vA, vB Вычисляет vA | vB (логическое ИЛИ) и сохраняет результат в регистр vA. Все значения integer (целое). vA = vA | vB |
178 | xor-int/2addr vA, vB Вычисляет vA ^ vB (исключающее ИЛИ) и сохраняет результат в регистр vA. Все значения integer (целое). vA = vA ^ vB |
179 | shl-int/2addr vA, vB Сдвигает vA влево на количество разрядов, заданное vB, и сохраняет результат в регистр vA. Все значения integer (целое). vA = vA << vB |
180 | shr-int/2addr vA, vB Сдвигает vA вправо на количество разрядов, заданное vB, и сохраняет результат в регистр vA. Все значения integer (целое). vA = vA >> vB |
181 | ushr-int/2addr vA, vB Сдвигает без сохранения знака vA вправо на количество разрядов, заданное vB, и сохраняет результат в регистр vA. Все значения integer (целое). vA = vA >>> vB |
182 | add-long/2addr vA, vB Вычисляет (vA, vA+1) + (vB, vB+1) и сохраняет результат в пару регистров vA, vA+1. Все значения long (целое). (vA, vA+1) = (vA, vA+1) + (vB, vB+1) |
183 | sub-long/2addr vA, vB Вычисляет (vA, vA+1) - (vB, vB+1) и сохраняет результат в пару регистров vA, vA+1. Все значения long (целое). (vA, vA+1) = (vA, vA+1) - (vB, vB+1) |
184 | mul-long/2addr vA, vB Вычисляет (vA, vA+1) * (vB, vB+1) и сохраняет результат в пару регистров vA, vA+1. Все значения long (целое). (vA, vA+1) = (vA, vA+1) * (vB, vB+1) |
185 | div-long/2addr vA, vB Вычисляет (vA, vA+1) / (vB, vB+1) и сохраняет результат в пару регистров vA, vA+1. Все значения long (целое). (vA, vA+1) = (vA, vA+1) / (vB, vB+1) |
186 | rem-long/2addr vA, vB Вычисляет (vA, vA+1) % (vB, vB+1) и сохраняет результат в пару регистров vA, vA+1. Все значения long (целое). (vA, vA+1) = (vA, vA+1) % (vB, vB+1) |
187 | and-long/2addr vA, vB Вычисляет (vA, vA+1) & (vB, vB+1) (логическое И) и сохраняет результат в пару регистров vA, vA+1. Все значения long (целое). (vA, vA+1) = (vA, vA+1) & (vB, vB+1) |
188 | or-long/2addr vA, vB Вычисляет (vA, vA+1) | (vB, vB+1) (логическое ИЛИ) и сохраняет результат в пару регистров vA, vA+1. Все значения long (целое). (vA, vA+1) = (vA, vA+1) | (vB, vB+1) |
189 | xor-long/2addr vA, vB Вычисляет (vA, vA+1) & (vB, vB+1) (исключающее ИЛИ) и сохраняет результат в пару регистров vA, vA+1. Все значения long (целое). (vA, vA+1) = (vA, vA+1) ^ (vB, vB+1) |
190 | shl-long/2addr vA, vB Сдвигает vA, vA+1 влево на количество разрядов, заданное vB, и сохраняет результат в пару регистров vA, vA+1. Все значения long (целое). (vA, vA+1) = (vA, vA+1) << vB |
191 | shr-long/2addr vA, vB Сдвигает vA, vA+1 вправо на количество разрядов, заданное vB, и сохраняет результат в пару регистров vA, vA+1. Все значения long (целое). (vA, vA+1) = (vA, vA+1) >> vB |
192 | ushr-long/2addr vA, vB Сдвигает без сохранения знака vA, vA+1 вправо на количество разрядов, заданное vB, и сохраняет результат в пару регистров vA, vA+1. Все значения long (целое). (vA, vA+1) = (vA, vA+1) >>> vB |
193 | add-float/2addr vA, vB Вычисляет vA + vB и сохраняет результат в регистр vA. Все значения float (с плавающей точкой). vA = vA + vB |
194 | sub-float/2addr vA, vB Вычисляет vA - vB и сохраняет результат в регистр vA. Все значения float (с плавающей точкой). vA = vA - vB |
195 | mul-float/2addr vA, vB Вычисляет vA * vB и сохраняет результат в регистр vA. Все значения float (с плавающей точкой). vA = vA * vB |
196 | div-float/2addr vA, vB Вычисляет vA / vB и сохраняет результат в регистр vA. Все значения float (с плавающей точкой). vA = vA / vB |
197 | rem-float/2addr vA, vB Вычисляет vA % vB и сохраняет результат в регистр vA. Все значения float (с плавающей точкой). vA = vA % vB |
198 | add-double/2addr vA, vB Вычисляет (vA, vA+1) + (vB, vB+1) и сохраняет результат в пару регистров vA, vA+1. Все значения double (с плавающей точкой). (vA, vA+1) = (vA, vA+1) + (vB, vB+1) |
199 | sub-double/2addr vA, vB Вычисляет (vA, vA+1) - (vB, vB+1) и сохраняет результат в пару регистров vA, vA+1. Все значения double (с плавающей точкой). (vA, vA+1) = (vA, vA+1) - (vB, vB+1) |
200 | mul-double/2addr vA, vB Вычисляет (vA, vA+1) * (vB, vB+1) и сохраняет результат в пару регистров vA, vA+1. Все значения double (с плавающей точкой). (vA, vA+1) = (vA, vA+1) * (vB, vB+1) |
201 | div-double/2addr vA, vB Вычисляет (vA, vA+1) / (vB, vB+1) и сохраняет результат в пару регистров vA, vA+1. Все значения double (с плавающей точкой). (vA, vA+1) = (vA, vA+1) / (vB, vB+1) |
202 | rem-double/2addr vA, vB Вычисляет (vA, vA+1) % (vB, vB+1) и сохраняет результат в пару регистров vA, vA+1. Все значения double (с плавающей точкой). (vA, vA+1) = (vA, vA+1) % (vB, vB+1) |
203 | add-int/lit16 vA, vB, 0xFFFF Вычисляет vB + 0xFFFF и сохраняет результат в регистр vA. Все значения integer (целое). vA = vB + 0xFFFF |
204 | rsub-int vA, vB, 0xFFFF Вычисляет 0xFFFF - vB и сохраняет результат в регистр vA. Все значения integer (целое). vA = 0xFFFF - vB |
205 | mul-int/lit16 vA, vB, 0xFFFF Вычисляет vB * 0xFFFF и сохраняет результат в регистр vA. Все значения integer (целое). vA = vB * 0xFFFF |
206 | div-int/lit16 vA, vB, 0xFFFF Вычисляет vB / 0xFFFF и сохраняет результат в регистр vA. Все значения integer (целое). vA = vB / 0xFFFF |
207 | rem-int/lit16 vA, vB, 0xFFFF Вычисляет vB % 0xFFFF и сохраняет результат в регистр vA. Все значения integer (целое). vA = vB % 0xFFFF |
208 | and-int/lit16 vA, vB, 0xFFFF Вычисляет vB & 0xFFFF (логическое И) и сохраняет результат в регистр vA. Все значения integer (целое). vA = vB & 0xFFFF |
209 | or-int/lit16 vA, vB, 0xFFFF Вычисляет vB | 0xFFFF (логическое ИЛИ) и сохраняет результат в регистр vA. Все значения integer (целое). vA = vB | 0xFFFF |
210 | xor-int/lit16 vA, vB, 0xFFFF Вычисляет vB ^ 0xFFFF (исключающее ИЛИ) и сохраняет результат в регистр vA. Все значения integer (целое). vA = vB ^ 0xFFFF |
211 | add-int/lit8 vAA, vBB, 0xFF Вычисляет vBB + 0xFF и сохраняет результат в регистр vAA. Все значения integer (целое). vAA = vBB + 0xFF |
212 | rsub-int/lit8 vAA, vBB, 0xFF Вычисляет 0xFF - vBB и сохраняет результат в регистр vAA. Все значения integer (целое). vAA = 0xFF - vBB |
213 | mul-int/lit8 vAA, vBB, 0xFF Вычисляет vBB * 0xFF и сохраняет результат в регистр vAA. Все значения integer (целое). vAA = vBB * 0xFF |
214 | div-int/lit8 vAA, vBB, 0xFF Вычисляет vBB / 0xFF и сохраняет результат в регистр vAA. Все значения integer (целое). vAA = vBB / 0xFF |
215 | rem-int/lit8 vAA, vBB, 0xFF Вычисляет vBB % 0xFF и сохраняет результат в регистр vAA. Все значения integer (целое). vAA = vBB % 0xFF |
216 | and-int/lit8 vAA, vBB, 0xFF Вычисляет vBB & 0xFF (логическое И) и сохраняет результат в регистр vAA. Все значения integer (целое). vAA = vBB & 0xFF |
217 | or-int/lit8 vAA, vBB, 0xFF Вычисляет vBB | 0xFF (логическое ИЛИ) и сохраняет результат в регистр vAA. Все значения integer (целое). vAA = vBB | 0xFF |
218 | xor-int/lit8 vAA, vBB, 0xFF Вычисляет vBB ^ 0xFF (исключающее ИЛИ) и сохраняет результат в регистр vAA. Все значения integer (целое). vAA = vBB ^ 0xFF |
219 | shl-int/lit8 vAA, vBB, 0xFF Сдвигает vBB влево на количество разрядов, заданное 0xFF, и сохраняет результат в регистр vAA. Все значения integer (целое). vAA = vBB << 0xFF |
220 | shr-int/lit8 vAA, vBB, 0xFF Сдвигает vBB вправо на количество разрядов, заданное 0xFF, и сохраняет результат в регистр vAA. Все значения integer (целое). vAA = vBB >> 0xFF |
221 | ushr-int/lit8 vAA, vBB, 0xFF Сдвигает без сохранения знака vBB вправо на количество разрядов, заданное 0xFF, и сохраняет результат в регистр vAA. Все значения integer (целое). vAA = vBB >>> 0xFF |
222 | invoke-polymorphic {vC, vD, vE, vF, vG}, method, prototype Вызывает (запускает) полиморфный метод подписи с параметрами. Присутствует в файлах Dex, начиная с версии 038. |
223 | invoke-polymorphic/range {vCCCC .. vNNNN}, method, prototype Вызывает (запускает) полиморфный метод подписи с параметрами, но параметры должны содержаться в регистрах с номерами по порядку. Присутствует в файлах Dex, начиная с версии 038. |
224 | invoke-custom {vC, vD, vE, vF, vG}, call site Разрешает (запускает) вызов сайта с параметрами. Присутствует в файлах Dex, начиная с версии 038. |
225 | invoke-custom/range {vCCCC .. vNNNN}, call point Разрешает (запускает) вызов сайта с параметрами, но параметры должны содержаться в регистрах с номерами по порядку. Присутствует в файлах Dex, начиная с версии 038. |
226 | const-method-handle vAA, method handle Помещает ссылку на дескриптор метода в регистр vAA. Присутствует в файлах Dex, начиная с версии 039. |
227 | const-method-type vAA, method prototype Помещает ссылку на прототип метода в регистр vAA, Присутствует в файлах Dex, начиная с версии 039. |
♥
© Maximoff , 2014 – 2024
Генерация страницы: 0.002 сек.