<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          langcraftCompiler from LLVM IR to Minecraft datapacks.

          聯(lián)合創(chuàng)作 · 2023-10-02 02:12

          Langcraft

          The LLVM target for Minecraft you've never wanted

          Langcraft is a code generator targeting Minecraft Data Packs. It can currently run a fairly substantial set of bitcode files without issue. The project has a built-in command interpreter for debugging that supports breakpoints (ish) and inspecting register/memory values. All generated datapacks can be run in a real Minecraft Java Edition 1.16+ world in under 5 minutes.

          Usage

          cargo run -- --arg1 --arg2 ./path/to/llvm/bitcode.bc
          

          Valid arguments are:

          • --help: Display usage and available options
          • --out=path/to/dir/: Specify the directory the datapack files should be placed in (default is ./out)
          • --run: Run the command interpreter on the generated code
          • --trace-bbs: Insert a print command at the beginning of each LLVM basic block

          To use the generated datapack in Minecraft:

          1. Copy the entire output folder (./out by default) to the datapacks/ directory of a Minecraft world (using a superflat void world is recommended)
          2. Run /function setup:setup. This only has to be done the first time a Langcraft datapack is used in a world.
          3. Run /function rust:run
          4. If the datapack is modified while the world is open, run /reload and then go back to step 3.

          Rust code must be built as follows:

          • Release mode
          • panic=abort
          • #![no_std]
          • #![no_main]
          • Have a main function with #[no_mangle]
          • Use i686-unknown-linux

          rust_interp is a Rust project already configured to generate the proper bitcode. The interpreter binary target as shown in the demo can be built with:

          sh compile_rust.sh
          

          And the file to use will be:

          rust_interp/target/i686-unknown-linux-gnu/release/deps/interpreter-SOMEHEXSTRING.bc

          Any other language capable of generating LLVM bitcode can be used, as long as it can be built for a bare-metal 32-bit target. For a clang example see compile_c.sh.

          Note that the latest nightly versions of rustc now use LLVM 11, which Langcraft cannot parse (yet). You can set an earlier version to use for a directory with:

          rustup override set nightly-2020-08-23
          

          Demo

          A video of a Langcraft-compiled interpreter can be seen here.

          License

          Licensed under either of

          • MIT License
          • Apache License, Version 2.0
          瀏覽 25
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本成人在线午夜影院 | 性爱无码网站 | 午夜福利影视 | 东京热视频专区 | 91久久精品日日躁夜夜躁欧美又粗又大 |