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

Side by Side Diff: src/trusted/validator/x86/decoder/generator/README

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 This directory implements the decoder table generator used by
2 native_client/src/trusted/validator/x86/decoder. See the README in
3 that directory for more information on how instructions are
4 modeled. In particular, note the sections on "Modeled Instructions",
5 "Opcode Sequences", and "Instruction Arguments".
6
7 Modeled instructions specify what assembly instructions are recognized
8 by the decoder. The form used is based on the AMD (R) document
9 24594-Rev.3.14-September 2007, "AMD64 Architecture Programmer's manual
10 Volume 3: General-Purpose and System Instructions", and Intel (R)
11 docuements 253666-030US - March 2009, "Intel 654 and IA-32
12 Architectures Software Developer's Manual, Volume2A: Instruction Set
13 Reference, A-M" and 253667-030US - March 2009, "Intel 654 and IA-32
14 Architectures Software Developer's Manual, Volume2B: Instruction Set
15 Reference, N-Z". In particular, it tries to follow the print forms
16 defined by AMD's "Appendex section A.1 - Opcode-Syntax Notation", or
17 Intel's "Appendix Section A.2 - Key To Abbreviations".
18
19 Source files:
20 -------------
21
22 modeled_nacl_inst.{c,h}
23
24 Defines structures to hold modeled instructions, and a
25 print routine to print these modeled instructions.
26
27 ncdecode_tablegen.{h,c}
28
29 Implements the table generator executable. Includes:
30
31 code to add modeled instructions (one by one).
32
33 code to check consistency of the modeled instructions.
34
35 code to print out generated tables that encode the modeled
36 instructions.
37
38 code to print out a human readable form of the modeled
39 instructions, so that it easy to see what instructions are
40 being encoded into the generated tables.
41
42 nacl_regsgen.{c,h}
43
44 Implements code that generates header files containing the
45 set of general purpose registers (and thier correlations) for
46 both x86-32 and x86-64.
47
48 ncdecode_forms.{h,c}
49
50 Implements code that takes string definitions of modeled
51 instructions, and generates the corresponding appropriate calls to
52 model the instructions, as expected by code in
53 ncdecode_tablegen.h. The modeled instructions define an opcode
54 sequence, an instruction mnemonic, and instruction arguments
55 expected by that instruction.
56
57 ncdecode_onebyte.c
58
59 Defines one byte opcodes for 386, return, and system instructions.
60
61 ncdecodeX87.c
62
63 Defines the x87 floating point instructions.
64
65 ncdecode_0F.c
66
67 Defines the multibyte opcode instructions, which begin with byte
68 0F. Excludes sse instructions ((except for the Ldmxcse, Stmxcsr,
69 Lfence, and Mfence instructions).
70
71 ncdecode_sse.c
72
73 Defines sse instructions (except for the Ldmxcse, Stmxcsr, Lfence,
74 and Mfence instructions, which are defined in ncdecode_0F.c).
75
76 defsize64.{c,h}
77
78 Defines instructions (mnemonics) which for x86-64, always have
79 64-bit arguments, and ignores operand size specified by prefix
80 bytes.
81
82 lock_insts.{c,h}
83
84 Defines instructions (mnemonics) that can use a lock prefix.
85
86 long_mode.{c,h}
87
88 Defines instructions (mnemonics) that are considered LongMode in
89 x86-64.
90
91 nacl_illegal.{c,h}
92
93 Defines instructions (mnemonics) that are (apriori) considered
94 illegal in native client.
95
96 nc_def_jumps.{c,h}
97
98 Defines instructions (mnemonics) that do either conditional or
99 unconditional jumps.
100
101 zero_extends.{c,h}
102
103 Defines instructions (mnemonics) that native client assumes to do
104 zero-extension when assigning a 32-bit value to a 64-bit register.
105
106 Note: This is not the same as specified in the instruction manuals.
107 Rather, it only includes those that have been whitelisted to do
108 this for native client.
109
110 nc_rep_prefix.{c,h}
111
112 Defines instructions (mnemonics) that can use the REP/REPE/REPZ
113 (F3) and REPNE/REPNZ (F2) prefix.
114
115 nacl_disallows.enum
116
117 Defines an enumerated type of possible reasons why a modeled
118 instruction may not be accepted by the table generator.
119
120 ncdecode_st.{c,h}
121
122 Symbol table used to encode names used when defining modeled
123 instructions. This includes common registers (i.e. the stack and
124 ip), as well as functions that convert instruction arguments
125 (strings) into the corresponding modeled instruction data.
126
127 nc_compress.{c,h}
128
129 Defines code that compresses the data used to model instructions,
130 so that the corresponding tables generated are smaller.
131
132 ncval_simplify.{c,h}
133
134 Code that simplifies (fully) modeled instructions into patterns
135 that can be used by the x86-64 validator to parse the corresponding
136 instructions.
137
138 force_cpp.cc
139
140 Dummy file to make scons understand that the corresponding
141 executable contains c++ code.
142
143 build.scons
144
145 The scons file to construct the needed tables for the x86 decoders
146 and validators.
147
148 Note: The tables are not automatically rebuilt on each call to
149 scons. Rather, to regenerate the corresponding tables, one must do
150 the following (in the native_client directory):
151
152 .> ./scons --mode=opt-linux platform=x86-64 valclean
153 .> ./scons --mode=opt-linux platform=x86-64 valgen
154
155 Generated Tables
156 ----------------
157
158 The following tables are generated by scons (when call with argument
159 "valgen"):
160
161 gen/nacl_disallows.h
162
163 The generated enumerated type defined by file nacl_disallows.enum
164
165 gen/nacl_disallows_impl.h
166
167 The generated implementation of the function NaClDisallowsFlagName.
168
169 gen/nc_opcode_table_32.h
170
171 The generated tables for the full decoder for x86-32 instructions.
172
173 gen/nc_opcode_table_64.h
174
175 The generated tables for the full decoder for x86-64 instructions.
176
177 gen/nc_subregs_64.h
178
179 The generated mapping of all possible registers in x86-64, to the
180 index of the (64-bit) register that is is a subregister of.
181
182 gen/nc_subregs_32.h
183
184 The generated mapping of all possible registers in x86-32, to the
185 index of the (32-bit) register that is is a subregister of.
186
187 Modeled Instructions
188 --------------------
189
190 To make it easier to see what instructions are generated, and test
191 that changes to the code in this directory has NOT changed that set,
192 the following test files exists:
193
194 testdata/64/modeled_insts.txt
195
196 The instructions recognized by the full decoder for x86-64.
197
198 testdata/32/modeled_insts.txt
199
200 The instructions recognized by the full decoder for x86-32.
201
202 testdata/64/ncval_reg_sfi_modeled_insts.txt
203
204 The instruction patterns (generated by ncval_simplify.c) that
205 will be used by the x86-64 register SFI validator.
206
207 testdata/32/ncval_reg_sfi_modeled_insts.txt
208
209 The instruction patterns (generated by ncval_simplify.c) that
210 will be used by the x86-32 register SFI validator.
211
212 Note: Deprecated and will be removed, since the x86-32 version
213 of the register SFI validator does not make sense.
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698