nooc programming language compiler
git clone git://
Log | Files | Refs | LICENSE

DateCommit messageAuthorFiles+-
2022-02-05 00:47add initial array member access syntaxNihal Jere5+71-0
2022-02-05 00:46x64: use 1 byte register for comparisonsNihal Jere2+3-3
2022-02-05 00:45x64: pick store size using temp sizeNihal Jere1+16-1
2022-02-05 00:45x64: fix 1 byte reg to reg comparisonsNihal Jere1+1-1
2022-02-03 23:26parse: reorganize main switch, exptract expr.start assignmentNihal Jere1+54-59
2022-02-03 20:09ir: pull variable into scope where it's usedNihal Jere1+3-3
2022-02-03 19:07ir: remove unnecessary variableNihal Jere1+2-4
2022-02-03 18:46move statbuf inside mainNihal Jere1+1-2
2022-02-03 18:22main: remove decl_allocNihal Jere1+16-22
2022-02-03 01:03move emit* call to mainNihal Jere3+19-22
2022-02-02 23:43check that toplevel main declaration is a procedureNihal Jere1+3-0
2022-01-31 22:54add break statement to get out of loopsNihal Jere7+52-8
2022-01-30 17:38replace blockstack with a more generic pointer stackNihal Jere17+121-97
2022-01-29 19:33ir: incorporate regalloc and regfree into chooseregsNihal Jere1+13-26
2022-01-29 16:38parse: add EXPECTADV macroNihal Jere1+15-26
2022-01-29 16:31parse: only accept curly brackets for blocks that aren't the toplevelNihal Jere2+8-6
2022-01-29 05:33more cleanupNihal Jere11+69-89
2022-01-29 01:18cleanup, especially externsNihal Jere12+34-50
2022-01-28 05:36use constNihal Jere18+172-172
2022-01-28 02:08add not operatorNihal Jere8+61-0
2022-01-28 01:18parse: enforce that if conditions are booleans with new classNihal Jere3+18-2
2022-01-27 22:34styleNihal Jere1+1-2
2022-01-27 22:34x64: handle je with 32-bit offsetNihal Jere1+13-2
2022-01-27 22:30ir: add iblock for more correct register allocationNihal Jere2+63-15
2022-01-27 22:23dumpir: print allocation range for a temporaryNihal Jere1+6-1
2022-01-20 20:36ir: add unconditional loop supportNihal Jere1+7-0
2022-01-20 20:37x64: handle backward jumpsNihal Jere2+30-19
2022-01-18 18:01main: fix assertionNihal Jere1+1-1
2022-01-18 17:52use toplevel data struct instead of global oneNihal Jere3+15-18
2022-01-18 05:20ir: add bumplabel wrapperNihal Jere2+16-2
2022-01-18 04:09ir: pull assignment generation code into function to replace gotoNihal Jere1+27-24
2022-01-18 03:52rename `struct item` to `struct statement`Nihal Jere5+45-45
2022-01-18 03:47x64: add curlabel and assertionsNihal Jere1+14-4
2022-01-16 02:59x64: use setcc for comparisons and use this for condjumpNihal Jere1+65-31
2022-01-16 02:52x64: consider active registers and curi when calculating block lengthNihal Jere1+5-7
2022-01-15 23:00ir: combine common decl/assgn code in genblockNihal Jere1+8-23
2022-01-15 22:43ir: change genexpr signature to return value type as wellNihal Jere1+45-33
2022-01-15 04:48util: output sigil appropriate for valtype in dumpirNihal Jere1+39-18
2022-01-15 03:15ir: add value typeNihal Jere3+110-65
2022-01-14 23:37ir: convert PUTINS macro into functionNihal Jere1+28-20
2022-01-14 17:56x64: remove outdated FIXMENihal Jere1+0-1
2022-01-14 04:00ir: handle zext properly in comparisonsNihal Jere3+165-36
2022-01-14 02:23ir: move blockpush/pop into genblockNihal Jere1+5-4
2022-01-14 01:32ir: add zext instruction to enable differentiating different widthsNihal Jere6+107-9
2022-01-13 23:33replace IR_SIZE with size field, and add flags field to struct tempNihal Jere4+22-36
2022-01-13 06:16ir: rename `struct interval` to `struct temp`Nihal Jere4+30-30
2022-01-13 02:59ir: rename to instr.valNihal Jere4+36-36
2022-01-13 02:10remove x64.hNihal Jere2+19-22
2022-01-13 02:08remove extra allocation when generating codeNihal Jere8+300-288
2022-01-12 22:39ir: extract common generation patterns to make less error proneNihal Jere1+71-46
2022-01-12 20:57ir: remove active member from `struct interval`Nihal Jere2+26-16
2022-01-12 02:30x64: only push used registers to the stack before callNihal Jere2+27-10
2022-01-12 00:46ir: fix *INS, reset out_index once done with itNihal Jere1+4-2
2022-01-11 05:01move backend specific stuff to ir.cNihal Jere5+36-30
2022-01-11 02:10x64: support numbered registers everywhere and remove some repetitionNihal Jere2+106-140
2022-01-10 21:27ir: fix some *INS macrosNihal Jere1+5-5
2022-01-10 21:10x64: remove unused functions and make instruction functions staticNihal Jere2+229-301
2022-01-10 20:39ir: replace regalloc loop with ffsNihal Jere1+8-9
2022-01-10 20:26make toplevel a globalNihal Jere4+10-8
2022-01-10 18:19x64: use relative offsets for callNihal Jere3+34-32
2022-01-10 05:29add x64 backend and do basic register allocationNihal Jere30+506-125
2022-01-10 05:10x64: push and pop numbered registersNihal Jere1+18-8
2022-01-10 05:09x64: allow numbered registers as call addressNihal Jere1+5-2
2022-01-10 05:07x64: fix opcodes for mov_r*_mr* instructionsNihal Jere1+8-8
2022-01-05 16:03replace x64 code generation with intermediate representationNihal Jere21+455-498
2022-01-03 05:28add xreallocNihal Jere3+18-10
2022-01-02 02:41gen expr to reg directlyNihal Jere1+7-10
2022-01-01 01:17type: typecheck procedure parametersNihal Jere2+97-43
2021-12-31 01:56move typecheck into type.cNihal Jere3+72-68
2021-12-31 01:19add reference type and class to replace strNihal Jere7+18-14
2021-12-30 20:49add fixed size global arraysNihal Jere7+66-7
2021-12-30 03:05replace strncmpNihal Jere1+1-2
2021-12-30 01:39reference to local variablesNihal Jere4+24-1
2021-12-29 23:30initial reference operator implementationNihal Jere6+50-0
2021-12-29 20:57expr: put left and right into binop struct inside unionNihal Jere5+42-40
2021-12-27 04:48parse: extract number parsing into parsenumNihal Jere1+23-5
2021-12-27 03:58parse: remove unused function findparamNihal Jere1+0-14
2021-12-27 02:47move debugging facilities into utilNihal Jere3+118-111
2021-12-27 02:42remove unused globalNihal Jere1+0-2
2021-12-27 02:23add some testsNihal Jere3+26-0
2021-12-26 23:50add i8Nihal Jere5+130-0
2021-12-26 23:06remove unused includesNihal Jere6+0-7
2021-12-26 22:40add equals boolean operatorNihal Jere8+33-3
2021-12-26 22:10i16Nihal Jere4+129-0
2021-12-26 19:13add i32 support in new 'place' schemeNihal Jere5+130-24
2021-12-26 04:15combine struct out and decl abstractions into struct placeNihal Jere3+105-161
2021-12-26 04:22x64: mov_disp8_m64_r64: fix operand orderNihal Jere1+1-1
2021-12-25 05:19remove unused 'curproc'Nihal Jere2+0-5
2021-12-25 04:36fix global declarationsNihal Jere4+53-10
2021-12-24 04:06add i32 typeNihal Jere6+150-18
2021-12-21 00:22check assignment expression for correct class instead of declarationNihal Jere2+6-5
2021-12-20 23:29typecheck all blocks, set appropriate classes for proc calls and identsNihal Jere6+77-34
2021-12-20 18:00generate assignment code in genexprNihal Jere1+6-16
2021-12-20 06:17typecheck assignments and declarations the same, and add a testNihal Jere2+22-30
2021-12-20 00:58type: fix str (pointer) size, and index for types already in tableNihal Jere1+3-1
2021-12-18 20:12return 1 value from a procedureNihal Jere6+145-83
2021-12-17 19:11refactor parameter parsing, parse function out nametypesNihal Jere14+91-54
2021-12-16 17:41get return value from syscallNihal Jere2+120-128
2021-12-16 05:58gensyscall: correct register allocationNihal Jere1+16-4
2021-12-16 05:35only allocate a register when necessary, fix clearregNihal Jere2+7-3
2021-12-16 02:01x64: make make function names more consistent, simplify thingsNihal Jere3+64-76
2021-12-15 18:04cleanupNihal Jere3+12-6
2021-12-14 23:47test/assign_int: exitNihal Jere1+2-0
2021-12-14 23:08fix stack addressingNihal Jere1+2-2
2021-12-14 22:50only exit blockloop on RCURLY if opened with LCURLYNihal Jere2+4-1
2021-12-14 22:42x64: use correct opcode for mov_disp8_m64_r64Nihal Jere1+1-1
2021-12-14 22:42reserve RBP and RSPNihal Jere2+3-1
2021-12-14 18:47stack allocated variablesNihal Jere10+186-58
2021-12-14 18:37blockstack: reworkNihal Jere5+23-12
2021-12-14 02:21array: add function to add count zero bytes to arrayNihal Jere2+26-0
2021-12-14 01:43array: reorder paramsNihal Jere2+4-4
2021-12-13 22:43fix warnings, cleanupNihal Jere7+19-27
2021-12-13 22:07type check proc declarationsNihal Jere2+13-1
2021-12-13 21:58decl: number of parameters must match in proc type and proc expressionNihal Jere2+11-0
2021-12-13 05:03Add types, stack frame construction and consequently proceduresNihal Jere19+1055-39
2021-12-10 02:17map tokens to strings, improve error messageNihal Jere2+24-1
2021-12-10 02:01make error varargNihal Jere5+45-34
2021-12-09 22:54parse: splitNihal Jere4+272-240
2021-12-09 20:25lex: split into separate fileNihal Jere4+130-124
2021-12-09 19:36set entry to offset of main procedureNihal Jere7+46-28
2021-12-09 16:58initial procedure implementationNihal Jere7+100-22
2021-12-08 05:48fix line/col markingNihal Jere1+3-2
2021-12-07 22:44move whitespace cases to topNihal Jere1+12-8
2021-12-07 22:24report location of errors and add testNihal Jere6+103-61
2021-12-07 17:57error check on mmapNihal Jere1+4-0
2021-12-07 17:44remove prog.ncNihal Jere1+0-8
2021-12-07 17:44add variable reassignment, and some testsNihal Jere7+97-8
2021-12-05 23:48disallow multiple declarations with same name in a blockNihal Jere1+5-0
2021-12-05 20:17fix block curly bracket handlingNihal Jere1+3-1
2021-12-05 20:02use 'let' for declarationNihal Jere4+18-13
2021-12-05 18:37add yes testNihal Jere2+15-0
2021-12-05 18:20string escapesNihal Jere4+64-36
2021-12-05 04:32remove unnecessary dereference/referenceNihal Jere1+1-1
2021-12-05 04:28add loopsNihal Jere3+23-6
2021-12-05 01:07add ADVANCE macro to advance slice when lexingNihal Jere1+26-40
2021-12-05 01:01add function to compare literals to slicesNihal Jere4+20-4
2021-12-05 00:06remove unnecessary mallocNihal Jere1+2-11
2021-12-04 23:44fix some -Wall -Werror issuesNihal Jere1+6-7
2021-12-04 02:42correct jump offset when exiting ifNihal Jere2+2-2
2021-12-04 02:16push starting virtual address to 0x10000Nihal Jere2+6-5
2021-12-03 21:57initial if/elseNihal Jere5+273-103
2021-11-30 19:38expression evaluation at assignmentNihal Jere5+48-10
2021-11-30 17:07check that binary expression operands are of the same typeNihal Jere2+28-27
2021-11-29 02:47error if not enough args givenNihal Jere1+3-1
2021-11-29 02:07add str type, allow assignment to variable from str literalNihal Jere3+23-7
2021-11-29 00:58types and typecheckingNihal Jere3+46-6
2021-11-28 05:28subtract operands in correct orderNihal Jere1+1-1
2021-11-28 05:06paranthetical grouping for expressionsNihal Jere2+8-1
2021-11-27 05:31make fcall an expressionNihal Jere2+53-48
2021-11-24 00:36subtractionNihal Jere5+41-1
2021-11-24 00:17cast void* to char* for memcpy for arithmeticNihal Jere1+1-1
2021-11-24 00:17Makefile: add clean targetNihal Jere1+3-0
2021-11-23 22:46functional binary expression evaluationNihal Jere4+59-6
2021-11-23 22:45allow dumping of EXPR_IDENTNihal Jere1+5-0
2021-11-19 17:12add licenseNihal Jere1+13-0
2021-11-19 17:09add .gitignoreNihal Jere1+2-0
2021-11-19 16:14extract elfNihal Jere4+71-63
2021-11-19 15:42util.[ch] and nooc.hNihal Jere5+134-122
2021-11-19 03:09add MakefileNihal Jere1+5-0
2021-11-19 03:08pull x64 specific code out of mainNihal Jere3+95-85
2021-11-19 00:38DATA_OFFSET, compile with cprocNihal Jere1+13-10
2021-11-18 20:44integer variables!Nihal Jere2+151-48
2021-11-18 20:44array: determine item size properlyNihal Jere1+1-1
2021-11-17 05:13add name and = tokenNihal Jere1+16-1
2021-11-17 01:29codegen for simple add expressionsNihal Jere2+42-6
2021-11-17 00:35add initial expression codegenNihal Jere1+138-40
2017-02-27 07:21remove old code arrayNihal Jere1+0-2
2021-11-09 23:02start on expression parsingNihal Jere1+71-23
2021-11-09 18:35pull mov encoding out of gensyscall, make enums important for encodingNihal Jere1+58-20
2021-11-07 05:34support multiple statementsNihal Jere2+63-42
2021-11-07 01:40array: fix allocationNihal Jere1+8-3
2021-11-06 21:53write syscall supportNihal Jere4+81-40
2021-11-03 19:39can do arbitrary syscallsNihal Jere4+90-15
2021-11-02 16:16add syscall callNihal Jere2+24-7
2021-11-02 04:54handle whitespaceNihal Jere2+7-3
2021-11-02 04:48add simple lexing, parsing and codegen capable of "compiling" prog.ncNihal Jere2+125-5
2021-11-01 04:09mmap input fileNihal Jere1+21-8
2021-10-31 03:15return code generatorNihal Jere1+97-0