OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2011 The Native Client Authors. All rights reserved. | 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 | 3 * Use of this source code is governed by a BSD-style license that can be |
4 * found in the LICENSE file. | 4 * found in the LICENSE file. |
5 */ | 5 */ |
6 | 6 |
7 /* | 7 /* |
8 * Internal implementation of the state associated with matching instructions. | 8 * Internal implementation of the state associated with matching instructions. |
9 */ | 9 */ |
10 | 10 |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
95 * Note: One can assume that two instructions use the same modeled | 95 * Note: One can assume that two instructions use the same modeled |
96 * NaClInst iff the pointers are equals. | 96 * NaClInst iff the pointers are equals. |
97 */ | 97 */ |
98 const NaClInst* inst; | 98 const NaClInst* inst; |
99 /* The corresponding expression tree denoted by the matched instruction. */ | 99 /* The corresponding expression tree denoted by the matched instruction. */ |
100 NaClExpVector nodes; | 100 NaClExpVector nodes; |
101 /* Transient pointer, which is defined each time an instruction is decoded. | 101 /* Transient pointer, which is defined each time an instruction is decoded. |
102 * It defines the decoder tables to use to decode the instruction. | 102 * It defines the decoder tables to use to decode the instruction. |
103 */ | 103 */ |
104 struct NaClDecodeTables* decoder_tables; | 104 struct NaClDecodeTables* decoder_tables; |
| 105 /* True if the instruction is unchanged while dynamically replacing code. |
| 106 * False if the instruction has changed or if code replacement is not being |
| 107 * performed (i.e. normal validation.) |
| 108 */ |
| 109 Bool unchanged; |
105 }; | 110 }; |
106 | 111 |
107 /* Model of an instruction iterator. */ | 112 /* Model of an instruction iterator. */ |
108 struct NaClInstIter { | 113 struct NaClInstIter { |
109 /* Defines the decoder table to use to decode the instruction. */ | 114 /* Defines the decoder table to use to decode the instruction. */ |
110 struct NaClDecodeTables* decoder_tables; | 115 struct NaClDecodeTables* decoder_tables; |
111 /* Defines the segment to process */ | 116 /* Defines the segment to process */ |
112 struct NaClSegment* segment; | 117 struct NaClSegment* segment; |
113 /* Defines the remaining memory to iterate over. */ | 118 /* Defines the remaining memory to iterate over. */ |
114 NCRemainingMemory memory; | 119 NCRemainingMemory memory; |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
156 | 161 |
157 /* Returns the (undecoded) instruction state of the iterator. Should only | 162 /* Returns the (undecoded) instruction state of the iterator. Should only |
158 * be used for testing. | 163 * be used for testing. |
159 */ | 164 */ |
160 | 165 |
161 struct NaClInstState* NaClInstIterGetUndecodedState(struct NaClInstIter* iter); | 166 struct NaClInstState* NaClInstIterGetUndecodedState(struct NaClInstIter* iter); |
162 | 167 |
163 EXTERN_C_END | 168 EXTERN_C_END |
164 | 169 |
165 #endif /* NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_DECODER_NC_INST_STATE_INTERNA
L_H_ */ | 170 #endif /* NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_X86_DECODER_NC_INST_STATE_INTERNA
L_H_ */ |
OLD | NEW |