- add third_party src.
[platform/framework/web/crosswalk.git] / src / native_client / src / trusted / validator / x86 / testing / enuminsts / README_scons.txt
1 Copyright (c) 2012 The Native Client Authors. All rights reserved.
2 Use of this source code is governed by a BSD-style license that be
3 found in the LICENSE file.
4
5 ************************************************************************
6  NOTE: The Scons version of enuminst is documented in this file.
7  It has less functionality than the Makefile version.
8 ************************************************************************
9
10 Exhaustive instruction enumeration test for x86 Native Client decoder.
11 Limited testing of validator.
12
13 SCONS now builds the 32- and 64-bit versions of enuminst. The scons
14 build incorporates NaCl and Ragel-Deterministic Finite Automata (R-DFA)
15 validators. It does not include Xed.
16
17 The binaries are available in (for example)
18     scons-out/opt-linux-x86-64/staging/enuminst
19     scons-out/opt-linux-x86-32/staging/enuminst
20
21 Some suggestions on running enuminst:
22   enuminst --legalnacl --legal=nacl --legal=ragel
23     Compare lengths of instructions that decode for nacl.
24     Filters out most NaCl illegal instructions.
25
26   enuminst --illegal=nacl --legal=ragel --print=ragel
27     Identifies instructions legal for R-DFA but not nacl.
28
29   enuminst --nacllegal --legal=nacl --illegal=ragel --print=nacl
30     Identifies instructions legal for nacl but not R-DFA.
31
32 The NaCl validator supports a partial-validation mode, which for a
33 a single instruction determines if it could or could not appear in
34 a legal Native Client module. Instructions such as "ret" can never
35 appear in a valid NaCl module, and are rejected. Instructions such
36 as "jmp *%eax" can appear, so  they are accepted.