Index: src/trusted/validator_ragel/unreviewed/parse_instruction.rl |
=================================================================== |
--- src/trusted/validator_ragel/unreviewed/parse_instruction.rl (revision 10976) |
+++ src/trusted/validator_ragel/unreviewed/parse_instruction.rl (working copy) |
@@ -708,7 +708,7 @@ |
SET_IMM_PTR(current_position); |
} |
action imm8_second_operand { |
- SET_IMM2_TYPE(IMM8); |
+ SET_SECOND_IMM_TYPE(IMM8); |
SET_IMM2_PTR(current_position); |
} |
action imm16_operand { |
@@ -716,7 +716,7 @@ |
SET_IMM_PTR(current_position - 1); |
} |
action imm16_second_operand { |
- SET_IMM2_TYPE(IMM16); |
+ SET_SECOND_IMM_TYPE(IMM16); |
SET_IMM2_PTR(current_position - 1); |
} |
action imm32_operand { |
@@ -724,7 +724,7 @@ |
SET_IMM_PTR(current_position - 3); |
} |
action imm32_second_operand { |
- SET_IMM2_TYPE(IMM32); |
+ SET_SECOND_IMM_TYPE(IMM32); |
SET_IMM2_PTR(current_position - 3); |
} |
action imm64_operand { |
@@ -732,7 +732,7 @@ |
SET_IMM_PTR(current_position - 7); |
} |
action imm64_second_operand { |
- SET_IMM2_TYPE(IMM64); |
+ SET_SECOND_IMM_TYPE(IMM64); |
SET_IMM2_PTR(current_position - 7); |
} |
}%% |
@@ -810,6 +810,15 @@ |
Rel32Operand(current_position + 1, data, jump_dests, size, |
&instruction_info_collected); |
} |
+ |
+ # Action which marks last byte as not immediate. Most 3DNow! instructions, |
+ # some AVX and XOP instructions have this property. |
+ # |
+ # This action is referenced by decode_x86_32 ragel machine in [autogenerated] |
+ # "validator_x86_32_instruction.rl" file. |
+ action last_byte_is_not_immediate { |
+ instruction_info_collected |= LAST_BYTE_IS_NOT_IMMEDIATE; |
+ } |
}%% |
%%{ |
@@ -895,7 +904,7 @@ |
instruction_begin = current_position + 1; |
SET_DISP_TYPE(DISPNONE); |
SET_IMM_TYPE(IMMNONE); |
- SET_IMM2_TYPE(IMMNONE); |
+ SET_SECOND_IMM_TYPE(IMMNONE); |
SET_REX_PREFIX(FALSE); |
SET_DATA16_PREFIX(FALSE); |
SET_LOCK_PREFIX(FALSE); |