Code Monkey home page Code Monkey logo

armoured_rust's Introduction

ARMoured_rust

GitHub Workflow Status codecov

Provides a convenient and performant API to produce arm64/Aarch64 instructions.

Instruction Support

The instruction implementations are indexed by Encoding.

Status Instruction Types Notes
โŒ SVE encodings -
โœ… Data Processing -- Immediate -
๐Ÿšง Branches, Exception Generating and System instructions -
โœ… Loads and Stores -
โœ… Data Processing -- Register -
โŒ Data Processing -- Scalar Floating-Point and Advanced SIMD -

Note: Status โŒ means "not yet supported"

Example

Here is an example usage of the McMemory and InstrStream. The McMemory (Machine Code Memory) allocates space for one page size, while the InstrStream generates and emits instruction to this memory.

fn main() {
    let mut mem = McMemory::new_pagesize();
    let mut stream = InstrStream::new(&mut mem);
    stream.mov_64_imm(1, 0x23);
    stream.add_64_imm(0, 1, 0x4);
    stream.ret();

    // print stream disassembly before patch
    println!("Disasm before patch: ");
    stream.print_disasm();

    // patch `stream.mov_64_imm(1, 0x23);` instruction
    stream.patch_at(stream.base_ptr(), |s| {
        s.movn_64_imm(1, 4);
    });

    // print stream disassembly after patch
    println!("Disasm after patch: ");
    stream.print_disasm();

    // get stream `fn() -> u64` pointer and make memory executable 
    let func = stream.nullary_fn_ptr();
    mem.make_executable();

    // call function and get result
    let res = unsafe { func() };
    println!("Called function with result: {res:#x}");
}

armoured_rust's People

Contributors

jozott00 avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.