Index: src/trusted/validator/x86/decoder/generator/README |
diff --git a/src/trusted/validator/x86/decoder/generator/README b/src/trusted/validator/x86/decoder/generator/README |
deleted file mode 100644 |
index 3ce3fff97350585cedc3731eef55ab608022f053..0000000000000000000000000000000000000000 |
--- a/src/trusted/validator/x86/decoder/generator/README |
+++ /dev/null |
@@ -1,213 +0,0 @@ |
-This directory implements the decoder table generator used by |
-native_client/src/trusted/validator/x86/decoder. See the README in |
-that directory for more information on how instructions are |
-modeled. In particular, note the sections on "Modeled Instructions", |
-"Opcode Sequences", and "Instruction Arguments". |
- |
-Modeled instructions specify what assembly instructions are recognized |
-by the decoder. The form used is based on the AMD (R) document |
-24594-Rev.3.14-September 2007, "AMD64 Architecture Programmer's manual |
-Volume 3: General-Purpose and System Instructions", and Intel (R) |
-docuements 253666-030US - March 2009, "Intel 654 and IA-32 |
-Architectures Software Developer's Manual, Volume2A: Instruction Set |
-Reference, A-M" and 253667-030US - March 2009, "Intel 654 and IA-32 |
-Architectures Software Developer's Manual, Volume2B: Instruction Set |
-Reference, N-Z". In particular, it tries to follow the print forms |
-defined by AMD's "Appendex section A.1 - Opcode-Syntax Notation", or |
-Intel's "Appendix Section A.2 - Key To Abbreviations". |
- |
-Source files: |
-------------- |
- |
-modeled_nacl_inst.{c,h} |
- |
- Defines structures to hold modeled instructions, and a |
- print routine to print these modeled instructions. |
- |
-ncdecode_tablegen.{h,c} |
- |
- Implements the table generator executable. Includes: |
- |
- code to add modeled instructions (one by one). |
- |
- code to check consistency of the modeled instructions. |
- |
- code to print out generated tables that encode the modeled |
- instructions. |
- |
- code to print out a human readable form of the modeled |
- instructions, so that it easy to see what instructions are |
- being encoded into the generated tables. |
- |
-nacl_regsgen.{c,h} |
- |
- Implements code that generates header files containing the |
- set of general purpose registers (and thier correlations) for |
- both x86-32 and x86-64. |
- |
-ncdecode_forms.{h,c} |
- |
- Implements code that takes string definitions of modeled |
- instructions, and generates the corresponding appropriate calls to |
- model the instructions, as expected by code in |
- ncdecode_tablegen.h. The modeled instructions define an opcode |
- sequence, an instruction mnemonic, and instruction arguments |
- expected by that instruction. |
- |
-ncdecode_onebyte.c |
- |
- Defines one byte opcodes for 386, return, and system instructions. |
- |
-ncdecodeX87.c |
- |
- Defines the x87 floating point instructions. |
- |
-ncdecode_0F.c |
- |
- Defines the multibyte opcode instructions, which begin with byte |
- 0F. Excludes sse instructions ((except for the Ldmxcse, Stmxcsr, |
- Lfence, and Mfence instructions). |
- |
-ncdecode_sse.c |
- |
- Defines sse instructions (except for the Ldmxcse, Stmxcsr, Lfence, |
- and Mfence instructions, which are defined in ncdecode_0F.c). |
- |
-defsize64.{c,h} |
- |
- Defines instructions (mnemonics) which for x86-64, always have |
- 64-bit arguments, and ignores operand size specified by prefix |
- bytes. |
- |
-lock_insts.{c,h} |
- |
- Defines instructions (mnemonics) that can use a lock prefix. |
- |
-long_mode.{c,h} |
- |
- Defines instructions (mnemonics) that are considered LongMode in |
- x86-64. |
- |
-nacl_illegal.{c,h} |
- |
- Defines instructions (mnemonics) that are (apriori) considered |
- illegal in native client. |
- |
-nc_def_jumps.{c,h} |
- |
- Defines instructions (mnemonics) that do either conditional or |
- unconditional jumps. |
- |
-zero_extends.{c,h} |
- |
- Defines instructions (mnemonics) that native client assumes to do |
- zero-extension when assigning a 32-bit value to a 64-bit register. |
- |
- Note: This is not the same as specified in the instruction manuals. |
- Rather, it only includes those that have been whitelisted to do |
- this for native client. |
- |
-nc_rep_prefix.{c,h} |
- |
- Defines instructions (mnemonics) that can use the REP/REPE/REPZ |
- (F3) and REPNE/REPNZ (F2) prefix. |
- |
-nacl_disallows.enum |
- |
- Defines an enumerated type of possible reasons why a modeled |
- instruction may not be accepted by the table generator. |
- |
-ncdecode_st.{c,h} |
- |
- Symbol table used to encode names used when defining modeled |
- instructions. This includes common registers (i.e. the stack and |
- ip), as well as functions that convert instruction arguments |
- (strings) into the corresponding modeled instruction data. |
- |
-nc_compress.{c,h} |
- |
- Defines code that compresses the data used to model instructions, |
- so that the corresponding tables generated are smaller. |
- |
-ncval_simplify.{c,h} |
- |
- Code that simplifies (fully) modeled instructions into patterns |
- that can be used by the x86-64 validator to parse the corresponding |
- instructions. |
- |
-force_cpp.cc |
- |
- Dummy file to make scons understand that the corresponding |
- executable contains c++ code. |
- |
-build.scons |
- |
- The scons file to construct the needed tables for the x86 decoders |
- and validators. |
- |
- Note: The tables are not automatically rebuilt on each call to |
- scons. Rather, to regenerate the corresponding tables, one must do |
- the following (in the native_client directory): |
- |
- .> ./scons --mode=opt-linux platform=x86-64 valclean |
- .> ./scons --mode=opt-linux platform=x86-64 valgen |
- |
-Generated Tables |
----------------- |
- |
-The following tables are generated by scons (when call with argument |
-"valgen"): |
- |
-gen/nacl_disallows.h |
- |
- The generated enumerated type defined by file nacl_disallows.enum |
- |
-gen/nacl_disallows_impl.h |
- |
- The generated implementation of the function NaClDisallowsFlagName. |
- |
-gen/nc_opcode_table_32.h |
- |
- The generated tables for the full decoder for x86-32 instructions. |
- |
-gen/nc_opcode_table_64.h |
- |
- The generated tables for the full decoder for x86-64 instructions. |
- |
-gen/nc_subregs_64.h |
- |
- The generated mapping of all possible registers in x86-64, to the |
- index of the (64-bit) register that is is a subregister of. |
- |
-gen/nc_subregs_32.h |
- |
- The generated mapping of all possible registers in x86-32, to the |
- index of the (32-bit) register that is is a subregister of. |
- |
-Modeled Instructions |
--------------------- |
- |
-To make it easier to see what instructions are generated, and test |
-that changes to the code in this directory has NOT changed that set, |
-the following test files exists: |
- |
-testdata/64/modeled_insts.txt |
- |
- The instructions recognized by the full decoder for x86-64. |
- |
-testdata/32/modeled_insts.txt |
- |
- The instructions recognized by the full decoder for x86-32. |
- |
-testdata/64/ncval_reg_sfi_modeled_insts.txt |
- |
- The instruction patterns (generated by ncval_simplify.c) that |
- will be used by the x86-64 register SFI validator. |
- |
-testdata/32/ncval_reg_sfi_modeled_insts.txt |
- |
- The instruction patterns (generated by ncval_simplify.c) that |
- will be used by the x86-32 register SFI validator. |
- |
- Note: Deprecated and will be removed, since the x86-32 version |
- of the register SFI validator does not make sense. |