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.
5 ************************************************************************
6 NOTE: The Scons version of enuminst is documented in this file.
7 It has less functionality than the Makefile version.
8 ************************************************************************
10 Exhaustive instruction enumeration test for x86 Native Client decoder.
11 Limited testing of validator.
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.
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
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.
26 enuminst --illegal=nacl --legal=ragel --print=ragel
27 Identifies instructions legal for R-DFA but not nacl.
29 enuminst --nacllegal --legal=nacl --illegal=ragel --print=nacl
30 Identifies instructions legal for nacl but not R-DFA.
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.