Code Monkey home page Code Monkey logo

asc's Introduction

asc

The compiler for the ASM++ language

Warning

The Code of this compiler is complete trash. (No ast)

There aren't any error messages

Example

Simple example how to create a simple programm in ASM++:

main {
    eax = 5
    ret
}

You can then compile and link it:

asc test.a++ -o test.o
g++ test.o -o test.out

Then you can run it as followed:

./a.out

Building

First you need to clone the reposentrory:

git clone https://github.com/Toni-Graphics/asc.git

Then you can compile it (you need to have rust installed):

cargo build --release

You can then copy from target/release/asc.exe to your installation directory

Documentation

ToDo

Support

Registers

64bit 32bit 16bit 8bit
rax eax ax al
rbx ebx bx bl
rcx ecx cx cl
rdx edx dx dl
rsi esi si sil
rdi edi di dil
rsp esp sp spl
rbp ebp bp bpl
r8 r8d r8w /
r9 r8d r8w /
r10 r10d r10w /
r11 r11d r11w /
r12 r12d r12w /
r13 r13d r13w /
r14 r14d r14w /
r15 r15d r15w /

Instructions

Following Instructions are supported:

Intel syntax ASM++ synatx
mov %reg, val reg = val
add %reg, val reg + val
sub %reg, val reg - val
mul %reg, val reg * val
div %reg, val reg / val

asc's People

Contributors

cr0a3 avatar

Stargazers

 avatar

Watchers

 avatar

asc's Issues

[BUG] CodeGeneration get func dosn't work

let mut func_scope = false;

        let mut func_scope_name = String::new();

        for token in tokens {
            match token {
                Token::RET => {
                    if func_scope {
                        print!("ret");
                        let func = self.functs.get_mut(&func_scope_name).unwrap();  // wrong function dosn't get the correct refernece
                        func.asm_ret();
                    }
                },
                Token::IDENT(x) => {
                    if !func_scope {
                        let mut func = self.builder.add_function(x.clone().as_str()).to_owned();
                        self.functs.insert(x.clone(), func);
                        func_scope = true;
                        func_scope_name = x;
                    } else {

                    }
                }

                _ => {}
            }

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.