Commit Graph

24 Commits

Author SHA1 Message Date
Paul Mathieu
71212cde2d cc: fix loaded variables after if block 2021-04-24 08:56:51 -07:00
Paul Mathieu
0e6a311610 ld: allow linking to a different offset 2021-04-17 23:05:02 -07:00
Paul Mathieu
2ab6b4a5a9 cc: add += and function pointers 2021-04-17 23:04:30 -07:00
Paul Mathieu
36bc1417b6 cpu: more instruction pipelining
This is needed to make WNS room for fetching instructions from SRAM.
2021-04-17 23:02:58 -07:00
Paul Mathieu
6825ce464f cc: fix load bug 2021-03-20 21:49:40 -07:00
Paul Mathieu
ef81ec3b12 cc: mostly fixed function calls 2021-03-20 21:27:26 -07:00
Paul Mathieu
eb303641d9 cc: fix typo 2021-03-20 21:25:01 -07:00
Paul Mathieu
b70cdd13c4 Add partial support for 8-bit loads
We're big-endian.
when we have this in memory:

00 01 02 03

And we need the first byte, we load the first 16-bit word:

0x0001

The first byte is then in the upper part of the word, and requires
a right shift by 8.
So any load into an 8-bit typed container needs to shift stuff.

So far, stores from/to the stack are exempted, they always load/store
full 16-bit words.

And a few othe rminor things. Like string null terminators.
And escaped characters in character literals.

Can you believe it's spelled 'literal', with a single t?
Me neither.
2021-03-18 08:35:23 -07:00
Paul Mathieu
48ffd4eb6d cc: fix field access bug 2021-03-14 18:07:52 -07:00
Paul Mathieu
7841987b6e cc: add support for string literals and some stuff
- string literals added as rodata
- fixed register shuffling in for/while loops & fun calls
- a few other fixes
2021-03-14 12:16:21 -07:00
Paul Mathieu
d1d0e421ce cpu: make BEQ and BNEQ only PC-relative 2021-03-14 12:14:29 -07:00
Paul Mathieu
790c08f1f2 ld: now generates a full rom vhdl from template 2021-03-13 15:44:48 -08:00
Paul Mathieu
e1557ad4b6 cc: add -I preprocessor option 2021-03-13 15:44:22 -08:00
Paul Mathieu
a3a67105eb cc: add support for structs
- now we keep track of expression type
- added '|' and '|=' operators
- implemented '->' operator
- minor cleanups
2021-03-13 15:42:39 -08:00
Paul Mathieu
44a3a03147 Fix relocs 2021-02-22 20:35:09 -08:00
Paul Mathieu
edf167ff2b Fix initial stack pointer 2021-02-22 20:34:54 -08:00
Paul Mathieu
f8586a3fb0 Fix eq 2021-02-22 20:34:35 -08:00
Paul Mathieu
fbeb22df5a Implement post_decrement 2021-02-22 20:34:17 -08:00
Paul Mathieu
abfd8d3647 Fix shl 2021-02-22 20:33:58 -08:00
Paul Mathieu
f3928f52a4 Fix if-else regs 2021-02-22 20:33:35 -08:00
Paul Mathieu
64d440c94b Word-precise imm for BEQ and BNEQ 2021-02-22 20:33:05 -08:00
Paul Mathieu
f59b3efb9f Fix a few details 2021-02-18 21:27:20 -08:00
Paul Mathieu
0157e235e4 Add support for char litterals and <<
Also streamline cc.py to do it all:
- cpp
- cc
- as

LD is still a separate step
2021-02-18 21:20:35 -08:00
Paul Mathieu
363944d417 Initial commit 2021-02-17 13:20:30 -08:00