OLD | NEW |
1 {{+bindTo:partials.standard_nacl_article}} | 1 {{+bindTo:partials.standard_nacl_article}} |
2 | 2 |
3 <section id="pnacl-bitcode-reference-manual"> | 3 <section id="pnacl-bitcode-reference-manual"> |
4 <h1 id="pnacl-bitcode-reference-manual">PNaCl Bitcode Reference Manual</h1> | 4 <h1 id="pnacl-bitcode-reference-manual">PNaCl Bitcode Reference Manual</h1> |
5 <div class="contents local" id="contents" style="display: none"> | 5 <div class="contents local" id="contents" style="display: none"> |
6 <ul class="small-gap"> | 6 <ul class="small-gap"> |
7 <li><a class="reference internal" href="#introduction" id="id1">Introduction</a>
</li> | 7 <li><a class="reference internal" href="#introduction" id="id1">Introduction</a>
</li> |
8 <li><p class="first"><a class="reference internal" href="#high-level-structure"
id="id2">High Level Structure</a></p> | 8 <li><p class="first"><a class="reference internal" href="#high-level-structure"
id="id2">High Level Structure</a></p> |
9 <ul class="small-gap"> | 9 <ul class="small-gap"> |
10 <li><a class="reference internal" href="#data-model" id="id3">Data Model</a></li
> | 10 <li><a class="reference internal" href="#data-model" id="id3">Data Model</a></li
> |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
52 </ul> | 52 </ul> |
53 </li> | 53 </li> |
54 </ul> | 54 </ul> |
55 | 55 |
56 </div><section id="introduction"> | 56 </div><section id="introduction"> |
57 <h2 id="introduction">Introduction</h2> | 57 <h2 id="introduction">Introduction</h2> |
58 <p>This document is a reference manual for the PNaCl bitcode format. It describe
s | 58 <p>This document is a reference manual for the PNaCl bitcode format. It describe
s |
59 the bitcode on a <em>semantic</em> level; the physical encoding level will be de
scribed | 59 the bitcode on a <em>semantic</em> level; the physical encoding level will be de
scribed |
60 elsewhere. For the purpose of this document, the textual form of LLVM IR is | 60 elsewhere. For the purpose of this document, the textual form of LLVM IR is |
61 used to describe instructions and other bitcode constructs.</p> | 61 used to describe instructions and other bitcode constructs.</p> |
62 <p>Since the PNaCl bitcode is based to a large extent on LLVM IR, many sections | 62 <p>Since the PNaCl bitcode is based to a large extent on LLVM IR as of |
63 in this document point to a relevant section of the LLVM language reference | 63 version 3.3, many sections in this document point to a relevant section |
64 manual. Only the changes, restrictions and variations specific to PNaCl are | 64 of the LLVM language reference manual. Only the changes, restrictions |
65 described—full semantic descriptions are not duplicated from the LLVM | 65 and variations specific to PNaCl are described—full semantic |
66 reference manual.</p> | 66 descriptions are not duplicated from the LLVM reference manual.</p> |
67 </section><section id="high-level-structure"> | 67 </section><section id="high-level-structure"> |
68 <h2 id="high-level-structure">High Level Structure</h2> | 68 <h2 id="high-level-structure">High Level Structure</h2> |
69 <p>A PNaCl portable executable (<strong>pexe</strong> in short) is a single LLVM
IR module.</p> | 69 <p>A PNaCl portable executable (<strong>pexe</strong> in short) is a single LLVM
IR module.</p> |
70 <section id="data-model"> | 70 <section id="data-model"> |
71 <h3 id="data-model">Data Model</h3> | 71 <h3 id="data-model">Data Model</h3> |
72 <p>The data model for PNaCl bitcode is fixed at little-endian ILP32: pointers ar
e | 72 <p>The data model for PNaCl bitcode is fixed at little-endian ILP32: pointers ar
e |
73 32 bits in size. 64-bit integer types are also supported natively via the i64 | 73 32 bits in size. 64-bit integer types are also supported natively via the i64 |
74 type (for example, a front-end can generate these from the C/C++ type | 74 type (for example, a front-end can generate these from the C/C++ type |
75 <code>long long</code>).</p> | 75 <code>long long</code>).</p> |
76 <p>Floating point support is fixed at IEEE 754 32-bit and 64-bit values (f32 and | 76 <p>Floating point support is fixed at IEEE 754 32-bit and 64-bit values (f32 and |
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
446 <p>The <code>llvm.nacl.atomic.is.lock.free</code> intrinsic is designed to | 446 <p>The <code>llvm.nacl.atomic.is.lock.free</code> intrinsic is designed to |
447 determine at translation time whether atomic operations of a certain | 447 determine at translation time whether atomic operations of a certain |
448 <code>byte_size</code> (a compile-time constant), at a particular <code>address<
/code>, | 448 <code>byte_size</code> (a compile-time constant), at a particular <code>address<
/code>, |
449 are lock-free or not. This reflects the C11 <code>atomic_is_lock_free</code> | 449 are lock-free or not. This reflects the C11 <code>atomic_is_lock_free</code> |
450 function from header <code><stdatomic.h></code> and the C++11 <code>is_loc
k_free</code> | 450 function from header <code><stdatomic.h></code> and the C++11 <code>is_loc
k_free</code> |
451 member function in header <code><atomic></code>. It can be used through th
e | 451 member function in header <code><atomic></code>. It can be used through th
e |
452 <code>__nacl_atomic_is_lock_free</code> builtin.</p> | 452 <code>__nacl_atomic_is_lock_free</code> builtin.</p> |
453 </section></section></section> | 453 </section></section></section> |
454 | 454 |
455 {{/partials.standard_nacl_article}} | 455 {{/partials.standard_nacl_article}} |
OLD | NEW |