Giter Club home page Giter Club logo

qx86-rs's Introduction

qx86-rust

Rust implementation of the Qtum-x86 subset of the x86 architecture

The subset of x86

The Qtum-x86 subset of the x86 architecture is defined as the following:

  • The top bit of an address is set if accessing mutable memory (anything >2Gb)
  • Segment registers are never used. Segment register override prefixes are ignored (though not invalid) and opcodes which explictly operate on segment registers including far jmps and far calls will throw an invalid opcode exception
  • Each opcode can be no larger than 16 bytes (x86 specification limit)
  • From the beginning of each opcode's location in memory, at least 16 bytes must be readable afterwards. This means that in a memory the size of 100 bytes, no reachable opcode can be placed after the 84th byte
  • All values in EFLAGS are ignored and treated as 0 except for AF, CF, ZF, PHF, and SF
  • External interrupt behavior is completely ignored, there is no external interrupt support
  • All memory below 0x10000 is inaccessible. This makes 16-bit addressing useless aside from with LEA. Aside from LEA, any other opcode with an address override prefix will be treated as an invalid opcode.

Instruction Set:

The instruction set supported is a subset of i686. All common opcodes generated by compilers will be supported, with the exception of FPU opcodes.

  • Instructions which require priviledge are disallowed
  • Instructions which test if memory using a segment register is readable is invalid
  • The BOUND instruction is invalid (never used by compilers due to unpredictable interrupt behavior, and requires a special QWord pipeline path to implement otherwise)

qx86-rs's People

Contributors

earlz avatar vor0220 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.