Граф коммитов

61 коммит

Автор SHA1 Сообщение Дата
Ayke van Laethem
4491a63fe8 Add print() for 64-bit integers 2018-04-26 23:46:34 +02:00
Ayke van Laethem
d17c21681b compiler: Accept more variable types in print() 2018-04-26 23:41:20 +02:00
Ayke van Laethem
d13566b302 compiler: Don't ignore errors in parsePackage 2018-04-26 23:40:19 +02:00
Ayke van Laethem
c940617849 compiler: Implement init() 2018-04-26 18:54:46 +02:00
Ayke van Laethem
9a988dd1d1 compiler: Refactor Compiler.Parse: extract parsePackage 2018-04-26 18:52:57 +02:00
Ayke van Laethem
2d19bb11ba compiler: Merge the runtime into the Go code, for better code size 2018-04-26 18:06:54 +02:00
Ayke van Laethem
775445cceb compiler: Reduce code size
Mark most Go functions as private (removing dead code) and configure to
optimize for size.
2018-04-26 17:16:54 +02:00
Ayke van Laethem
a446b4de97 Be able to actually run the blinky example on an nRF
runtime.Sleep() doesn't work yet so it prints a lot of data. Also, this
depends on a small patch to nrfx.
2018-04-25 20:35:19 +02:00
Ayke van Laethem
e80f06bc5e Implement more type casting 2018-04-25 19:50:46 +02:00
Ayke van Laethem
69140c240b Implement named binop types 2018-04-25 19:49:54 +02:00
Ayke van Laethem
b4ba90d7f5 Implement uintptr type 2018-04-25 19:48:42 +02:00
Ayke van Laethem
51b947956f Use Clang as CGo compiler 2018-04-25 19:46:54 +02:00
Ayke van Laethem
93399c009e Emit textual LLVM IR 2018-04-25 19:46:03 +02:00
Ayke van Laethem
cefce41df0 Correct function name for calls to other packages 2018-04-22 19:22:12 +02:00
Ayke van Laethem
9d3dfd8868 Make package process order deterministic: based on import order 2018-04-22 19:06:44 +02:00
Ayke van Laethem
03c6b7256e Simplify parseConstInt 2018-04-22 15:59:45 +02:00
Ayke van Laethem
5067891236 Implement unsigned integers 2018-04-22 15:59:17 +02:00
Ayke van Laethem
cf9cea7a0d Implement array bounds check 2018-04-21 01:03:05 +02:00
Ayke van Laethem
1f0651c84c Implement string out of bounds checks 2018-04-21 00:40:21 +02:00
Ayke van Laethem
db66039dfe Implement panic() 2018-04-21 00:26:14 +02:00
Ayke van Laethem
d812873e60 Add support for (zero-initialized) arrays 2018-04-20 23:57:27 +02:00
Ayke van Laethem
02332080e6 Use LLVM API for type size calculations 2018-04-20 23:55:30 +02:00
Ayke van Laethem
217c48f933 Implement interfaces on the string type 2018-04-20 22:42:43 +02:00
Ayke van Laethem
fc2eee4ee8 Better error checking on interface conversion 2018-04-20 17:22:20 +02:00
Ayke van Laethem
12eb9eec3c Store LLVM reference instead of function name in Frame 2018-04-20 17:04:06 +02:00
Ayke van Laethem
45e7376f39 Implement print() and println() in Go 2018-04-20 16:32:40 +02:00
Ayke van Laethem
ff9e7a8b77 Implement CGo support
This mostly works around the default CGo support: this compiler doesn't
need special wrappers for C functions as it uses the C calling
convention by default.
2018-04-20 16:31:43 +02:00
Ayke van Laethem
deadcb8dae Implement lookup on strings (extract byte values)
TODO: bounds checking
2018-04-20 16:20:13 +02:00
Ayke van Laethem
4d33d9d38b Implement -expr 2018-04-20 16:18:54 +02:00
Ayke van Laethem
01d2cc566e Fix type width for pointer types 2018-04-20 16:18:09 +02:00
Ayke van Laethem
e436ca7c8d Implement named constants 2018-04-20 14:52:07 +02:00
Ayke van Laethem
f5f64782ce Add casting between types 2018-04-20 14:50:52 +02:00
Ayke van Laethem
3e3c3d259f Add rudimentary interface support 2018-04-19 20:33:10 +02:00
Ayke van Laethem
850fef9852 Add builtin len(string) 2018-04-19 20:24:01 +02:00
Ayke van Laethem
013b375904 Add type methods 2018-04-16 17:04:49 +02:00
Ayke van Laethem
9060e699e4 Add heap allocation (without escape analysis!) 2018-04-16 01:55:44 +02:00
Ayke van Laethem
d555ad93d7 Add support for structs 2018-04-16 01:01:11 +02:00
Ayke van Laethem
de0ff3b3af Various changes
* Don't skip init function
* Add global variables and constants
* Add unary operations
* Use import path instead of package name (except for main)
* ...more
2018-04-15 04:50:28 +02:00
Ayke van Laethem
60a01a43a3 Implement strings the way Go itself does
This makes string slicing cheap.
2018-04-14 19:24:21 +02:00
Ayke van Laethem
7cc2301621 Print LLVM IR on verify failure 2018-04-14 19:09:19 +02:00
Ayke van Laethem
63a545540d Add Jump and Phi support, to enable things like for loops 2018-04-14 19:07:29 +02:00
Ayke van Laethem
ad98a29a6f Add first branching support (if) 2018-04-13 22:19:13 +02:00
Ayke van Laethem
fdf907c96c Add some more binops 2018-04-13 22:17:49 +02:00
Ayke van Laethem
cc5a29d759 Add a load of binops 2018-04-13 21:03:35 +02:00
Ayke van Laethem
6607cff14e Print IR before optimization
This makes invalid IR easier to spot (see previous commit).
2018-04-13 20:30:45 +02:00
Ayke van Laethem
01ee0c456c Handle local variables correctly
They were computed again and again each time they were used.
2018-04-13 20:29:52 +02:00
Ayke van Laethem
e0e04b88cb Make expression statement more generic; introduce *Frame for func state 2018-04-13 20:19:54 +02:00
Ayke van Laethem
9d8d0b9e03 Treat llvm.Value as a pointer 2018-04-13 20:03:35 +02:00
Ayke van Laethem
6a8dc7ca9a Support functions with parameters 2018-04-13 02:11:12 +02:00
Ayke van Laethem
e0da91f753 Add return values 2018-04-13 00:18:28 +02:00