1 .. _sandbox-internals-index:
7 The sandbox internals documentation describes implementation details for
8 Native Client sandboxing, which is also used by Portable Native
9 Client. These details can be useful to reimplement a sandbox, or to
10 write assembly code that follows sandboxing rules for Native Client
11 (Portable Native Client does not allow platform-specific assembly code).
13 As an implementation detail, the Native Client sandboxes described here
14 are currently used by Portable Native Client to execute code on the
15 corresponding machines in a safe manner. The portable bitcode contained
16 in a **pexe** is translated to a machine-specific **nexe** before
17 execution. This may change at a point in time: Portable Native Client
18 doesn't necessarily need these sandboxes to execute code on these
19 machines. Note that the Portable Native Client compiler itself is also
20 untrusted: it too runs in a Native Client sandbox described below.
22 Native Client has sandboxes for:
24 * :ref:`ARM 32-bit <arm-32-bit-sandbox>`.
25 * x86-32: the original design is described in `Native Client: A Sandbox
26 for Portable, Untrusted x86 Native Code
27 <http://research.google.com/pubs/archive/34913.pdf>`_, the current
28 design has changed slightly since then.
29 * :ref:`x86-64 <x86-64-sandbox>`.
30 * MIPS32, described in the `overview of Native Client for MIPS
31 <https://code.google.com/p/nativeclient/issues/attachmentText?id=2275&aid=22750018000&name=native-client-mips-0.4.txt>`_,
33 <https://code.google.com/p/nativeclient/issues/detail?id=2275>`_.