diff --git a/README.md b/README.md new file mode 100644 index 0000000..80d15bc --- /dev/null +++ b/README.md @@ -0,0 +1,29 @@ +# pxasme + +A single-pass x86_64 assembler that emits relocatable ELF64 objects. + +## Usage + +```bash +pxasme -Src myapp.asm -Dest myapp.o +ld -s -o myapp myapp.o +./myapp +``` + +## Status + +- [X] Lexer + - [X] "Variables" in data/rodata (u8, u16, u32, u64, sz) + - [X] C-style addressing (bare or `&`) + - [ ] Unified public/private, import/export syntax + - [X] State machine parser for opcode arguments +- [X] Parser + - [X] mov, ret, syscall, sections, variables + - [X] strlen($var) compile-time function + - [ ] more isa ops +- [X] Code generation + - [X] Generate ELF64 binaries + - [X] Relocations + - [X] `R_X86_64_32S` (n.b. not PIC) + - [X] `R_X86_64_64` + - [ ] Freestanding mode