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

329 коммитов

Автор SHA1 Сообщение Дата
Ayke van Laethem
dbb5ae5a23
avr: use i16 for lengths 2018-09-20 20:52:59 +02:00
Ron Evans
45348bfc3e examples: add hello world serial communication
Signed-off-by: Ron Evans <ron@hybridgroup.com>
2018-09-19 22:38:29 +02:00
Ayke van Laethem
c0d1963d63
runtime/nrf: remove some leftover header files 2018-09-18 20:45:02 +02:00
Ayke van Laethem
7c9a3d70bc
nrf: use correct ISA type for pca10040
No change to code size.
2018-09-18 20:16:55 +02:00
Ayke van Laethem
c554c7c009
nrf: use assembly for nrf52, not nrf51
Slightly increase code size, but this is the more correct thing to do.
2018-09-18 20:15:18 +02:00
Ayke van Laethem
87963d3d5b
compiler: add -size flag to replace size utility
The size flag has two modes:
  -size=short: prints data basically equivalent to the `size` program.
  -size=full:  tries to determine sizes per package (not entirely
               accurate).
2018-09-18 00:04:21 +02:00
Ayke van Laethem
8b94fe9205
avr: fix assembly comment regarding data/stack 2018-09-17 20:51:41 +02:00
Ayke van Laethem
db8c3479d6
compiler: give names to nameless globals
This should make it easier in the future to show a breakdown of which
packages consume text/data/bss.
2018-09-17 20:41:48 +02:00
Ayke van Laethem
1f2af7d848
compiler: do not remove dead globals
These were not removed when they contain data, and will be removed by
LLVM anyway.
2018-09-17 15:15:03 +02:00
Ayke van Laethem
b0aeaed635
compiler: allow a global to be defined multiple times
This is only possible when using compiler directives like the magic
_extern_ prefix on global variables.
2018-09-17 15:14:57 +02:00
Ayke van Laethem
77934f364f
avr: fix corrupted .data byte
The stack and the .data section shared the first byte, leading to
corruption of the first byte of .data.
2018-09-17 15:10:52 +02:00
Ron Evans
fc0ff3a987
avr: initial implementation for PWM
Signed-off-by: Ron Evans <ron@hybridgroup.com>

Edited slightly by Ayke van Laethem
2018-09-17 14:03:05 +02:00
Ayke van Laethem
94358959f5
compiler: fix unsafe.Sizeof and friends for AVR
This fixes runtime.printptr().
2018-09-16 20:42:10 +02:00
Ayke van Laethem
e04f0868ed
compiler: fix constant globals on AVR
Turn const globals into non-const globals, at least until pointers have
the correct address space attribute.
2018-09-16 16:31:38 +02:00
Ayke van Laethem
a02426948b
avr: implement .data section
This doesn't completely work for some reason as the first character of
.data is corrupted, but otherwise it works.
2018-09-16 16:26:04 +02:00
Ayke van Laethem
39e3fe28db
avr: convert initialization from asm to Go
This increases code size by 1 instruction (2 bytes) because LLVM isn't
yet smart enough to recognize that it doesn't need to clear a register
to use 0: it can just use r1 which is always 0 according to the
convention. It makes initialization a lot easier to read, however.
2018-09-16 15:03:48 +02:00
Ayke van Laethem
0d8a7e1666
avr: link with the GCC runtime library
This allows the use of some compiler-generated builtins that are
hopefully compatible with LLVM. Example: println(uint8(foo))

Code size is unchanged normally but of course compiler builtins will
increase code size when actually used (for example with division).
2018-09-16 14:54:10 +02:00
Ayke van Laethem
a25e598463
compiler: truncate output files before writing 2018-09-16 13:41:56 +02:00
Ayke van Laethem
35fe24981f
runtime/unix: panic: call abort() instead of exit(2)
abort() will cause gdb to show a backtrace when running inside the
debugger, and abort() seems more appropriate anyway for critical errors.
2018-09-16 13:01:15 +02:00
Ayke van Laethem
1484bb5c2c
all: basic support for the os package
The resulting binary is pretty big due to lacking optimizations
(probably because of interfaces), so that should be fixed.
2018-09-16 13:01:03 +02:00
Ayke van Laethem
c237633d34
all: use a custom sync package
The sync package is strongly tied to the runtime, so it's easier to
implement a new one. Besides, it's pretty big so it's better to replace
it.
2018-09-15 18:51:51 +02:00
Ayke van Laethem
94b18e2d79
compiler: support integer convert in interpreter 2018-09-15 18:47:15 +02:00
Ayke van Laethem
1d2e0cd259
compiler: don't show DebugRef with -dumpssa 2018-09-15 18:45:46 +02:00
Ayke van Laethem
2a20c0c7f0
all: rewrite sleep function
time.Sleep now compiles on all systems, so lets use that.
Additionally, do a few improvements in time unit handling for the
scheduler. This should lead to somewhat longer sleep durations without
wrapping (on some platforms).

Some examples got smaller, some got bigger. In particular, code using
the scheduler got bigger and the blinky1 example got smaller (especially
on Arduino: 380 -> 314 bytes).
2018-09-15 01:58:54 +02:00
Ayke van Laethem
1ac67cf8de
compiler: adding a few more ignored init calls
These calls are generated in the JavaScript target (syscall/js and
syscall with GOOS=js), but they are not used at the moment. So ignore
them until they're needed.
2018-09-15 01:04:19 +02:00
Ayke van Laethem
38efc5653d
compiler: support compile-time hashmap with int keys 2018-09-15 01:03:22 +02:00
Ayke van Laethem
152e12e4b0
all: implement iterating over hashmaps
Still no support for hashmaps > 8 entries, but this kind of works.
2018-09-15 00:29:34 +02:00
Ayke van Laethem
5b4b6cfee2
compiler: use -dumpssa flag in interpreter
This is useful for debugging.
2018-09-14 23:29:33 +02:00
Ayke van Laethem
866a6edb5f
compiler: fix word size for AVR
Using a word size less than 4 led to typechecker errors.
2018-09-14 21:36:51 +02:00
Ayke van Laethem
327076da39
examples/test: add slice-a-slice test 2018-09-14 21:02:29 +02:00
Ayke van Laethem
1387a1024d
examples/test: small cleanup
I forgot to remove some commented out code...
2018-09-14 21:00:52 +02:00
Ayke van Laethem
112f6dc01a
all: implement tinygo flash command
This will now just work:

    tinygo flash -target=arduino examples/blinky1
2018-09-14 20:59:28 +02:00
Ayke van Laethem
6450daa3c8
runtime/cgo: go fmt 2018-09-14 20:58:00 +02:00
Ayke van Laethem
13633133a5
Makefile: simplify make fmt
There is no C source file anymore `go fmt` will complain about.
2018-09-14 20:57:21 +02:00
Ayke van Laethem
09cbd223c3
compiler: remove -runtime flag
It is not necessary anymore.
2018-09-14 20:56:48 +02:00
Ayke van Laethem
c763e9f1a6
compiler: produce .hex files directly 2018-09-14 20:27:04 +02:00
Ayke van Laethem
f41a8032e7
machine/dummy: add fake button pins 2018-09-14 17:01:16 +02:00
Ayke van Laethem
752332ff13
machine/nrf: implement reading GPIO pins 2018-09-14 16:59:28 +02:00
Ron Evans
ab6757fe11
avr: implement Get() function on AVR, and leave stubs for NRF and dummy machines
Signed-off-by: Ron Evans <ron@hybridgroup.com>
2018-09-13 20:54:01 +02:00
Ayke van Laethem
ec50db729d
compiler: implement slicing slices 2018-09-13 20:49:35 +02:00
Ayke van Laethem
5b3ef2c02f
compiler: fix unreachable type assert
The unreachable instruction is actually a block terminator so may only
be inserted at the end of a basic block. This is not always the case for
type asserts, so don't insert this instruction.

LLVM will hopefully optimize it anyway when it realizes anything after
the panic() call is unreachable.
2018-09-13 20:48:23 +02:00
Ayke van Laethem
9cd7c7f0ba
compiler: fix phi nodes for type asserts
Type asserts insert more basic block, causing phi node values to be
invalid. Fix this by remembering the outgoing LLVM basic block.
2018-09-13 20:42:04 +02:00
Ayke van Laethem
57661a3c76
compiler: fix typeassert without comma-ok for unused types 2018-09-13 16:58:44 +02:00
Ron Evans
d948abdf82 avr: correct register for Set() operation on pins 0-7
Signed-off-by: Ron Evans <ron@hybridgroup.com>
2018-09-13 12:03:04 +02:00
Ayke van Laethem
76e77917d8
targets: move target-specific files to this directory 2018-09-13 00:59:39 +02:00
Ayke van Laethem
e389d38dec
Makefile: improve gen-device* commands 2018-09-13 00:55:49 +02:00
Ayke van Laethem
18b3e8d156
gen-device: move to new tools directory 2018-09-13 00:55:18 +02:00
Ayke van Laethem
a46ed465c5
README: defer has been fully implemented 2018-09-13 00:31:43 +02:00
Ayke van Laethem
422c848163
README: fix nrf example and add arduino example 2018-09-13 00:23:53 +02:00
Ayke van Laethem
7e7502a990
README: update build instructions 2018-09-13 00:23:45 +02:00