Commit Graph

34 Commits

Author SHA1 Message Date
Nathan Braswell
d85f388792 Shorter AST names 2018-05-22 20:14:15 -04:00
Nathan Braswell
eefa752d55 shortening of str and vec 2018-05-22 19:43:54 -04:00
Nathan Braswell
804f98f9cf Finish up c extern functions for bytecode 2018-03-26 01:25:15 -04:00
Nathan Braswell
1c94cd2f03 Small, but added system call to bytecode 2018-03-23 01:27:44 -04:00
Nathan Braswell
b8213dfc9f Fix character value handling. String stuff appears to work correctly in bytecode now 2018-03-22 00:51:57 -04:00
Nathan Braswell
c056af6e56 accidentally broke subtraction 2018-03-21 01:50:24 -04:00
Nathan Braswell
f209fad91e Can generate bytecode for files that use a decent bit of the standard library now. Need to finish implementing the external functions, and check to see why we can't print integers. I think it might be that character values aren't being generated correctly 2018-03-21 01:20:28 -04:00
Nathan Braswell
8edfd88c28 Fix this handling, other bytecode fixes 2018-03-21 00:00:06 -04:00
Nathan Braswell
91768a042e Fix/refactor value handling: value strings are now parsed in ast_transformation and re-escaped in c_generator, and used raw in bytecode_generator 2018-03-19 21:03:06 -04:00
Nathan Braswell
8907e44cad Added support in bytecode for ext var, some more ext functions, and emitting char* values. These have extra quotes right now, as the value carries around the quotes. Should change that in ast_transformation and c_generator 2018-03-19 00:57:33 -04:00
Nathan Braswell
d5fee839f7 Add in calling of external functions (malloc and free for now), move memory addresses to be real memeory addresses, add support for sizeof compiler intrinsic 2018-03-18 03:42:15 -04:00
Nathan Braswell
3f20646b16 Fixed pointer arithmatic 2018-03-17 12:47:01 -04:00
Nathan Braswell
5b9e9b61d1 It seems impossible, but I think I might have sucessfully implemented struct returning correctly, the first time, with no compile errors or runtime errors, after 45 minutes starting a little past 4am. Woo! 2018-03-17 04:47:24 -04:00
Nathan Braswell
10cad2ab74 Passing as param works too 2018-03-16 01:31:03 -04:00
Nathan Braswell
eaa22e1d11 Struct copying should work. Now it's just making them be parameters and return values 2018-03-16 01:20:44 -04:00
Nathan Braswell
5ebb6d5482 Start work on structs. Can declare structs and access members. Copying structs and passing them as parameters or returning them doesn't work yet 2018-03-15 00:29:21 -04:00
Nathan Braswell
8de92e1c3b After reflecting on the difficulties of lowering the increment operators, decided just to implement them in bytecode 2018-03-14 23:43:52 -04:00
Nathan Braswell
c6a43728a5 Fix function calls by giving own reg for return and saving registers first. Use reset_reg more often to try to keep the number of registers that need to be saved down. 2018-03-14 01:16:00 -04:00
Nathan Braswell
364f4d8a3e Sketch out places for struct involvement, write while and for loops 2018-03-13 00:39:16 -04:00
Nathan Braswell
fc6c87f56a Finished the operators, besides struct access 2018-03-12 23:34:35 -04:00
Nathan Braswell
378a81602a Add in signed and unsigned mul div, and add a mod 2018-03-12 20:17:26 -04:00
Nathan Braswell
ef516891ca add xor 2018-03-12 00:43:51 -04:00
Nathan Braswell
5464555e0d addressof, dereference, and [] implemented 2018-03-10 15:32:51 -05:00
Nathan Braswell
3c4b1864c7 Add in addi to reduce use of imm, add and or and not to put in negate/subtract (might need it's own opcode, really) as well as and or and not themselves 2018-03-10 00:27:16 -05:00
Nathan Braswell
55a448a3b5 Small work towards operators. + workes now 2018-03-08 23:25:48 -05:00
Nathan Braswell
fc67aa7ce8 Added support for parameters 2018-03-07 22:57:46 -05:00
Nathan Braswell
8da84b56c2 working bytecode with call and a real stack and psudo abi. Found a bug where -= doesn't behave correctly when the lhs is a function returning a reference because it's lowered to a = a - b where a is the same ast_node, I think 2018-03-07 01:58:19 -05:00
Nathan Braswell
5b46089694 Stop declaring variable before assignment - i don't think necessary for recursive closure, def not in current code, and messes up globals with values 2018-03-06 23:30:00 -05:00
Nathan Braswell
8a22263b1d make JNZ JZ (if was backwards, and this is more convient right now 2018-02-27 21:41:57 -05:00
Nathan Braswell
dad97a25a5 If statements work with the addition of jmp and jnz 2018-02-27 21:27:29 -05:00
Nathan Braswell
adcebb3284 Move towards more legit stack setup api and registers as registers 2018-02-27 23:53:08 +00:00
Nathan Braswell
00bb4e928c Can eval basic block with variables and return 2018-02-03 22:47:21 -05:00
Nathan Braswell
aad363f631 Bytecode work 2018-02-03 18:53:13 -05:00
Nathan Braswell
7850f11297 very basic groundwork for bytecode 2018-02-02 00:26:31 -05:00