Commit Graph

370 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
Nathan Braswell
c0209118e5 Small cleanup 2018-01-02 23:22:46 -05:00
Nathan Braswell
241764f1f4 Clean up 2017-12-27 16:49:08 -05:00
Nathan Braswell
d414459313 Fixed it 2017-12-27 16:10:36 -05:00
Nathan Braswell
7ddbecaf1d debugging 2017-11-13 22:39:14 -05:00
Nathan Braswell
cb720e5cd6 working on moving rest of obj stuff into obj_lower 2017-11-03 00:39:58 -04:00
Nathan Braswell
5b8ef4ce2e some cleanup 2017-10-29 17:53:30 -04:00
Nathan Braswell
0132ade7ed 10% or so speed up 2017-10-28 15:28:34 -04:00
Nathan Braswell
48b21c54ae Missed a change last time - also made all_types in function_value_lower a hash_set for a ~20 sec speedup 2017-10-23 09:50:18 -04:00
Nathan Braswell
13f1e9df89 More clean up; need to add return type checking pass so that can clean up c_generator more. 2017-10-23 01:08:25 -04:00
Nathan Braswell
6964df5ac8 Remove code_triple entirely! 2017-10-23 00:06:25 -04:00
Nathan Braswell
e70d31a51c Add in address_of_ensure_variable_lower.krak that makes sure & can always take a reference, even of a constant, etc, and start the cleanup of c_generator that this allows 2017-10-22 21:41:58 -04:00
Nathan Braswell
73faf50053 tiny cleanup 2017-09-02 09:12:25 -04:00
Nathan Braswell
00f29fe6a5 small clean up 2017-08-27 14:15:09 -04:00
Nathan Braswell
e4326233dc a bit more cleanup 2017-08-23 10:12:00 -04:00
Nathan Braswell
36d7581cb0 further simplify the function call function 2017-08-22 20:52:27 -04:00
Nathan Braswell
4921371afe Cleaned up generate_function_call. It's quite understandable now! 2017-08-18 10:05:12 -04:00