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

Side by Side Diff: src/trusted/validator/x86/decoder/generator/modeled_nacl_inst.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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 /*
2 * Copyright (c) 2011 The Native Client Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file.
5 */
6
7 /*
8 * modeled_nacl_inst.h - Extends (runtime) model of instructions (NaClInst)
9 * to include information needed only during table generation.
10 */
11
12 #ifndef NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_DECODER_GENERATOR_NCOPCODE_DESC_ H__
13 #define NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_DECODER_GENERATOR_NCOPCODE_DESC_ H__
14
15 #include "native_client/src/trusted/validator/x86/decoder/ncopcode_desc.h"
16
17 /* Models metadata about an instruction, defining a pattern. Note: Since the
18 * same sequence of opcode bytes may define more than one pattern (depending on
19 * other bytes in the parsed instruction), the patterns are
20 * modeled using a singly linked list.
21 */
22 typedef struct NaClModeledInst {
23 /* The prefix associated with the instruction. */
24 NaClInstPrefix prefix;
25 /* The number of opcode bytes in the instruction. */
26 uint8_t num_opcode_bytes;
27 /* The actual opcode bytes. */
28 uint8_t opcode[NACL_MAX_ALL_OPCODE_BYTES];
29 /* Defines the origin of this instruction. */
30 NaClInstType insttype;
31 /* Flags defining additional facts about the instruction. */
32 NaClIFlags flags;
33 /* The instruction that this instruction implements. */
34 NaClMnemonic name;
35 /* Defines opcode extentions, which encodes values for OpcodeInModRm,
36 * OpcodePlusR, and OpcodeInModRmRm. Note: to fit the possible 9
37 * bits of information in 8 bits, we assume that OpcodeInModRm
38 * and OpcodePlusR do not happen in the same instruction.
39 */
40 uint8_t opcode_ext;
41 /* The number of operands modeled for this instruction. */
42 uint8_t num_operands;
43 /* The corresponding models of the operands. */
44 NaClOp* operands;
45 /* Pointer to the next pattern to try and match for the
46 * given sequence of opcode bytes.
47 */
48 struct NaClModeledInst* next_rule;
49 } NaClModeledInst;
50
51 /* Sets the OpcodeInModRm value in the opcode_ext field. */
52 void NaClSetOpcodeInModRm(uint8_t value, uint8_t *opcode_ext);
53
54 /* Sets the OpcodeInModRmRm value in th opcode_ext field. */
55 void NaClSetOpcodeInModRmRm(uint8_t value, uint8_t *opcode_ext);
56
57 /* Sets the OpcodePlusR value in the opcode_ext field. */
58 void NaClSetOpcodePlusR(uint8_t value, uint8_t *opcode_ext);
59
60 /* Implements trie nodes for selecting instructions that must match
61 * a specific sequence of bytes. Used to model NOP cases.
62 */
63 typedef struct NaClModeledInstNode {
64 /* The matching byte for the trie node. */
65 uint8_t matching_byte;
66 /* The matching modeled instruction, if byte matched. */
67 NaClModeledInst* matching_inst;
68 /* Node to match remaining bytes if matching_byte matches. */
69 struct NaClModeledInstNode* success;
70 /* Node to try next if match_byte doesn't match. Note:
71 * The trie is generated in such a way that if the next input
72 * byte is > matching_byte, no node in the fail subtree will
73 * match the current input. That is, nodes in the trie are
74 * sorted by the sequence of matching bytes.
75 */
76 struct NaClModeledInstNode* fail;
77 } NaClModeledInstNode;
78
79 /* Print out the given instruction to the given file. However, always
80 * print the value NULL for next_rule, even if the value is non-null. This
81 * function should be used to print out an individual opcode (instruction)
82 * pattern.
83 */
84 void NaClModeledInstPrint(struct Gio* f, const NaClModeledInst* inst);
85
86 #endif /* NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_DECODER_GENERATOR_NCOPCODE_DE SC_H__ */
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698