Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cr0a3/asc
The compiler for the ASM++ language
https://github.com/cr0a3/asc
asm codegenlib compiler x64
Last synced: 21 days ago
JSON representation
The compiler for the ASM++ language
- Host: GitHub
- URL: https://github.com/cr0a3/asc
- Owner: Cr0a3
- License: mpl-2.0
- Created: 2024-03-31T08:13:29.000Z (7 months ago)
- Default Branch: master
- Last Pushed: 2024-04-26T18:32:26.000Z (6 months ago)
- Last Synced: 2024-10-05T23:44:43.098Z (about 1 month ago)
- Topics: asm, codegenlib, compiler, x64
- Language: Rust
- Homepage:
- Size: 43 KB
- Stars: 2
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
- License: LICENSE
Awesome Lists containing this project
README
# 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++:
```ASM++
main {
eax = 5
ret
}
```You can then compile and link it:
```bash
asc test.a++ -o test.o
g++ test.o -o test.out
```Then you can run it as followed:
```bash
./a.out
```## Building
First you need to clone the reposentrory:
```bash
git clone https://github.com/Toni-Graphics/asc.git
```Then you can compile it (you need to have rust installed):
```bash
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 |