Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(99)

Unified Diff: src/trusted/validator/x86/decoder/nc_inst_state_internal.h

Issue 625923004: Delete old x86 validator. (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client
Patch Set: rebase master Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/trusted/validator/x86/decoder/nc_inst_state_internal.h
diff --git a/src/trusted/validator/x86/decoder/nc_inst_state_internal.h b/src/trusted/validator/x86/decoder/nc_inst_state_internal.h
deleted file mode 100644
index 2f839daba395bff263569b71bab98fac8599ebd9..0000000000000000000000000000000000000000
--- a/src/trusted/validator/x86/decoder/nc_inst_state_internal.h
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Copyright (c) 2012 The Native Client Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-/*
- * Internal implementation of the state associated with matching instructions.
- */
-
-#ifndef NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_DECODER_NC_INST_STATE_INTERNAL_H_
-#define NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_DECODER_NC_INST_STATE_INTERNAL_H_
-
-#include "native_client/src/shared/utils/types.h"
-#include "native_client/src/trusted/validator/x86/decoder/ncop_exps.h"
-#include "native_client/src/trusted/validator/x86/decoder/nc_inst_state.h"
-#include "native_client/src/trusted/validator/x86/ncinstbuffer.h"
-
-EXTERN_C_BEGIN
-
-/* The meta model of an x86 opcode instruction. */
-struct NaClInst;
-
-/* Model of a code segment. */
-struct NaClSegment;
-
-/* Decoder tables used to decode instructions. */
-struct NaClDecodeTables;
-
-/* Defines the type used to align OpExprNodes when memory allocating. */
-typedef uint64_t NaClOpExpElement;
-
-/* Defines the decoder tables to use to decode an instruction. */
-struct NaClDecodeTables;
-
-/* Model data needed to decode an x86 instruction. */
-struct NaClInstState {
- /* This pointer is used to access vbase, allowing instruction addresses to be
- * printed in the address space that the code is being mapped to.
- */
- struct NaClInstIter* iter;
- /* The bytes used to parse the x86-32 instruction (may have added
- * zero filler if the instruction straddles the end of the memory segment).
- */
- NCInstBytes bytes;
- /* The address of the instruction, relative to the beginning of the code
- * segment.
- */
- NaClPcAddress inst_addr;
- /* Define the upper limit on how many bytes can be in the instruction. */
- uint8_t length_limit;
- /* Define the number of prefix bytes processed. */
- uint8_t num_prefix_bytes; /* 0..4 */
- /* The prefix byte used to recognize the opcode, or zero if not applicable. */
- uint8_t opcode_prefix;
- /* Define the number of opcode bytes processed. */
- uint8_t num_opcode_bytes;
- /* If REX prefix found, its value. Otherwise zero. */
- uint8_t rexprefix;
- /* Number of REX prefix bytes found. */
- uint8_t num_rex_prefixes;
- /* If Mod/RM byte defined, its value. Otherwise zero. */
- uint8_t modrm;
- /* True if prefix bytes are duplicated prefix bytes. */
- Bool has_prefix_duplicates;
- /* True if prefix has ambiguous segment prefix bytes. */
- Bool has_ambig_segment_prefixes;
- /* True only if the instruction has an SIB byte. */
- Bool has_sib;
- /* If a SIB byte is defined, its value. Otherwise zero. */
- uint8_t sib;
- /* Define the number of displacement bytes matched by the instruction. */
- uint8_t num_disp_bytes;
- /* Define the index of the first displacement byte of the instruction, or
- * zero if num_disp_bytes == 0.
- */
- uint8_t first_disp_byte;
- /* Define the number of immediate bytes defined by the instruction. */
- uint8_t num_imm_bytes;
- /* Define the index of the first immediate byte of the instruction, or
- * zero if num_imm_bytes == 0;.
- */
- uint8_t first_imm_byte;
- /* Define the number of bytes to the second immediate value if defined
- * (defaults to zero).
- */
- uint8_t num_imm2_bytes;
- /* The computed (default) operand size associated with the instruction. */
- uint8_t operand_size;
- /* The computed (default) address size associated with the instruction. */
- uint8_t address_size;
- /* The set of prefix byte kinds associated with the instruction
- * (See kPrefixXXXX #define's in ncdecode.h)
- */
- uint32_t prefix_mask;
- /* The (opcode) instruction pattern used to match the instruction.
- * Note: If this value is NULL, we have not yet tried to match
- * the current instruction with the corresponding instruction iterator.
- * Note: One can assume that two instructions use the same modeled
- * NaClInst iff the pointers are equals.
- */
- const NaClInst* inst;
- /* The corresponding expression tree denoted by the matched instruction. */
- NaClExpVector nodes;
- /* Transient pointer, which is defined each time an instruction is decoded.
- * It defines the decoder tables to use to decode the instruction.
- */
- struct NaClDecodeTables* decoder_tables;
- /* True if the instruction is unchanged while dynamically replacing code.
- * False if the instruction has changed or if code replacement is not being
- * performed (i.e. normal validation.)
- */
- Bool unchanged;
-};
-
-/* Model of an instruction iterator. */
-struct NaClInstIter {
- /* Defines the decoder table to use to decode the instruction. */
- struct NaClDecodeTables* decoder_tables;
- /* Defines the segment to process */
- struct NaClSegment* segment;
- /* Defines the remaining memory to iterate over. */
- NCRemainingMemory memory;
- /* Defines the current (relative pc) index into the segment. */
- NaClMemorySize index;
- /* Defines the index of the current instruction, relative to
- * the beginning of the segment.
- */
- NaClMemorySize inst_count;
- /* The following fields define a ring buffer, where buffer_index
- * is the index of the current instruction in the buffer, and
- * buffer_size is the number of iterator states in the buffer.
- */
- size_t buffer_size;
- size_t buffer_index;
- struct NaClInstState* buffer;
-};
-
-/* Structure holding the results of consuming the opcode bytes of the
- * instruction.
- */
-typedef struct {
- /* The applicable prefix byte selector, or 0 if no prefix selector. */
- uint8_t opcode_prefix;
- /* The (last) byte of the matched opcode. */
- uint8_t opcode_byte;
- /* The most specific prefix that the opcode bytes can match
- * (or OpcodePrefixEnumSize if no such patterns exist).
- */
- NaClInstPrefix matched_prefix;
- /* The number of bytes to subtract from the instruction length,
- * the next time GetNextNaClInstCandidates is called.
- */
- uint8_t next_length_adjustment;
-} NaClInstPrefixDescriptor;
-
-/* Given the current location of the (relative) pc of the given instruction
- * iterator, update the given state to hold the matched opcode
- * (instruction) pattern. If no matching pattern exists, set the state
- * to a matched undefined opcode (instruction) pattern. In all cases,
- * update the state to hold all information on the matched bytes of the
- * instruction.
- */
-void NaClDecodeInst(struct NaClInstIter* iter, struct NaClInstState* state);
-
-/* Returns the (undecoded) instruction state of the iterator. Should only
- * be used for testing.
- */
-
-struct NaClInstState* NaClInstIterGetUndecodedState(struct NaClInstIter* iter);
-
-EXTERN_C_END
-
-#endif /* NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_DECODER_NC_INST_STATE_INTERNAL_H_ */
« no previous file with comments | « src/trusted/validator/x86/decoder/nc_inst_state.c ('k') | src/trusted/validator/x86/decoder/nc_inst_state_statics.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698