Ayke van Laethem
a9bbed2f6c
tgo: Implement special case for LLVM intrinsics
7 years ago
Ayke van Laethem
89f77fa861
machine/dummy: Add LED1, LED2, etc to dummy machine
7 years ago
Ayke van Laethem
320c583221
Implement printing of int8/uint8/pointers
7 years ago
Ayke van Laethem
e171f32493
Implement minimal bump pointer allocator
Useful for MCUs, until a real garbage collector has been implemented.
7 years ago
Ayke van Laethem
b45ea2deb9
arm: Fix linker script stack section
7 years ago
Ayke van Laethem
2fca772431
Makefile: Autodetect LLVM bin dir
7 years ago
Ayke van Laethem
a39951c3d7
runtime: Convert device initialization to Go
7 years ago
Ayke van Laethem
c4f0dc90dd
machine: Rewrite most of the GPIO functionality
Split across device types (nrf, dummy) and use registers directly
instead of the HAL.
7 years ago
Ayke van Laethem
16489c0df6
compiler: Workaround for runtime.boundsCheck in runtime dependencies
7 years ago
Ayke van Laethem
01602309fd
compiler: Implement register loads and stores
The way it works is somewhat of a hack, though. But it works for now.
7 years ago
Ayke van Laethem
8c426b406d
Automatically convert .svd files to Go source files
7 years ago
Ayke van Laethem
3b4621c215
compiler: Implement XOR (^x)
7 years ago
Ayke van Laethem
877d0817ea
compiler: Comments
7 years ago
Ayke van Laethem
84b45a33f1
compiler: Implement initializers for arrays in global structs
7 years ago
Ayke van Laethem
db8b6c6900
compiler: Fix package dependency order calculation
The algorithm is now simpler and seems to work better.
7 years ago
Ayke van Laethem
88f143f3e6
compiler: Implement initializers for global structs
7 years ago
Ayke van Laethem
b0cb51bdd8
compiler: Do not pre-define runtime functions by the compiler
7 years ago
Ayke van Laethem
b11a618d99
compiler: Set actual initializer for global variables
In the Go SSA, global variables are initialized in the init() function
instead of declaring them in the global itself. Work around this oddity
by simply setting the correct initializer when we find this global.
This should produce more efficient code, both in RAM and code size.
Apparently LLVM didn't optimize it away on it's own.
7 years ago
Ayke van Laethem
c5a82bb916
compiler: Fix globals so they actually work
7 years ago
Ayke van Laethem
14cbc1555d
compiler: Use zeroinitializer instead of memset
7 years ago
Ayke van Laethem
6ed1ca11c7
compiler: Use correct package path for global
7 years ago
Ayke van Laethem
2534111141
compiler: comments
7 years ago
Ayke van Laethem
e895372918
compiler: Don't externally link runtime.init
There is no reason to make this exception.
7 years ago
Ayke van Laethem
3a4663150e
runtime: Implement GPIO output
Now we can actually blink a LED!
7 years ago
Ayke van Laethem
5bbd41e9fb
compiler: Implement -ffunction-sections work
7 years ago
Ayke van Laethem
f7c2d0124d
compiler: Support bitcasting non-integers
7 years ago
Ayke van Laethem
bddb0c49b2
compiler: Add boolean constants
7 years ago
Ayke van Laethem
6ad451a582
compiler: Fix named global path
7 years ago
Ayke van Laethem
4522d2f49e
Makefile: Remove SECONDARY: rule
For some reason it isn't necessary anymore.
7 years ago
Ayke van Laethem
d4170faa0a
runtime/nrf: Add Sleep()
7 years ago
Ayke van Laethem
4491a63fe8
Add print() for 64-bit integers
7 years ago
Ayke van Laethem
d17c21681b
compiler: Accept more variable types in print()
7 years ago
Ayke van Laethem
d13566b302
compiler: Don't ignore errors in parsePackage
7 years ago
Ayke van Laethem
f4ee774866
Set up a stack
I forgot to actually set up a stack for the program but strangely it
(mostly) worked - probably due to inlining.
7 years ago
Ayke van Laethem
c940617849
compiler: Implement init()
7 years ago
Ayke van Laethem
9a988dd1d1
compiler: Refactor Compiler.Parse: extract parsePackage
7 years ago
Ayke van Laethem
2d19bb11ba
compiler: Merge the runtime into the Go code, for better code size
7 years ago
Ayke van Laethem
775445cceb
compiler: Reduce code size
Mark most Go functions as private (removing dead code) and configure to
optimize for size.
7 years ago
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.
7 years ago
Ayke van Laethem
10427c2b6f
Add blinky example (which doesn't blink a LED, yet)
7 years ago
Ayke van Laethem
04fef19753
Add runtime support for the nRF52
7 years ago
Ayke van Laethem
e80f06bc5e
Implement more type casting
7 years ago
Ayke van Laethem
69140c240b
Implement named binop types
7 years ago
Ayke van Laethem
b4ba90d7f5
Implement uintptr type
7 years ago
Ayke van Laethem
51b947956f
Use Clang as CGo compiler
7 years ago
Ayke van Laethem
93399c009e
Emit textual LLVM IR
7 years ago
Ayke van Laethem
ea129f3072
Implement runtime.Sleep
7 years ago
Ayke van Laethem
cefce41df0
Correct function name for calls to other packages
7 years ago
Ayke van Laethem
9d3dfd8868
Make package process order deterministic: based on import order
7 years ago
Ayke van Laethem
03c6b7256e
Simplify parseConstInt
7 years ago