mirror of
https://github.com/revanced/smali.git
synced 2025-05-04 16:44:25 +02:00
Add support for blank register ranges
This commit is contained in:
parent
de5b35dbb6
commit
8d323b3c48
@ -603,7 +603,7 @@ register_list
|
|||||||
| ->^(I_REGISTER_LIST[$start, "I_REGISTER_LIST"]);
|
| ->^(I_REGISTER_LIST[$start, "I_REGISTER_LIST"]);
|
||||||
|
|
||||||
register_range
|
register_range
|
||||||
: REGISTER (DOTDOT REGISTER)? -> ^(I_REGISTER_RANGE[$start, "I_REGISTER_RANGE"] REGISTER REGISTER?);
|
: (startreg=REGISTER (DOTDOT endreg=REGISTER)?)? -> ^(I_REGISTER_RANGE[$start, "I_REGISTER_RANGE"] $startreg? $endreg?);
|
||||||
|
|
||||||
verification_error_reference
|
verification_error_reference
|
||||||
: CLASS_DESCRIPTOR | fully_qualified_field | fully_qualified_method;
|
: CLASS_DESCRIPTOR | fully_qualified_field | fully_qualified_method;
|
||||||
|
@ -895,8 +895,12 @@ register_list[int totalMethodRegisters, int methodParameterRegisters] returns[by
|
|||||||
})*);
|
})*);
|
||||||
|
|
||||||
register_range[int totalMethodRegisters, int methodParameterRegisters] returns[int startRegister, int endRegister]
|
register_range[int totalMethodRegisters, int methodParameterRegisters] returns[int startRegister, int endRegister]
|
||||||
: ^(I_REGISTER_RANGE startReg=REGISTER endReg=REGISTER?)
|
: ^(I_REGISTER_RANGE (startReg=REGISTER endReg=REGISTER?)?)
|
||||||
{
|
{
|
||||||
|
if ($startReg == null) {
|
||||||
|
$startRegister = 0;
|
||||||
|
$endRegister = -1;
|
||||||
|
} else {
|
||||||
$startRegister = parseRegister_short($startReg.text, $totalMethodRegisters, $methodParameterRegisters);
|
$startRegister = parseRegister_short($startReg.text, $totalMethodRegisters, $methodParameterRegisters);
|
||||||
if ($endReg == null) {
|
if ($endReg == null) {
|
||||||
$endRegister = $startRegister;
|
$endRegister = $startRegister;
|
||||||
@ -905,13 +909,11 @@ register_range[int totalMethodRegisters, int methodParameterRegisters] returns[i
|
|||||||
}
|
}
|
||||||
|
|
||||||
int registerCount = $endRegister-$startRegister+1;
|
int registerCount = $endRegister-$startRegister+1;
|
||||||
if (registerCount > 256) {
|
|
||||||
throw new SemanticException(input, $I_REGISTER_RANGE, "A register range can span a maximum of 256 registers");
|
|
||||||
}
|
|
||||||
if (registerCount < 1) {
|
if (registerCount < 1) {
|
||||||
throw new SemanticException(input, $I_REGISTER_RANGE, "A register range must have the lower register listed first");
|
throw new SemanticException(input, $I_REGISTER_RANGE, "A register range must have the lower register listed first");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
verification_error_reference returns[Item item]
|
verification_error_reference returns[Item item]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user