Commit graph

7662 commits

Author SHA1 Message Date
David Given
8105281534 Make sure li works properly when loading fixed up values which end up as 0. Use
lui rather than li to load high values.
2018-09-12 22:28:40 +02:00
David Given
a8df9721d3 Adding new tokens to the assembler isn't quite as easy as I thought: ensure
that NUMBERF is stored properly in the temporary file.
2018-09-12 22:27:39 +02:00
David Given
5264db860d Values are more useful shown in hex. 2018-09-11 23:17:09 +02:00
David Given
8379969b6f Fix an unsubtle bug where subtractions were done backwards... 2018-09-11 23:16:50 +02:00
David Given
8230ec42ac Fix a subtle thinko which was causing bits 2-3 of jump targets to be reset. 2018-09-11 23:16:30 +02:00
David Given
b81e060372 Add huge numbers of failing tests. 2018-09-10 23:40:03 +02:00
David Given
0ce368324e Add the bitset helpers. We now have enough helpers for the tests to run (and
massively fail).
2018-09-10 23:37:28 +02:00
David Given
2f8fe3ce6e Do some cleanup; ha16[] and friends can now be used with li. 2018-09-10 23:37:04 +02:00
David Given
3122946a6f Replaced some incorrect hi16s with ha16s. 2018-09-10 23:21:54 +02:00
David Given
008737ed19 Added some more very untested helper functions. 2018-09-10 23:20:52 +02:00
David Given
a1747ac916 Add the .dataf4 and .dataf8 directives to the assembler --- manually converting
floats and doubles to bytes is not fun. It might even work!
2018-09-10 22:56:18 +02:00
David Given
53f7de794a Ansify. 2018-09-10 22:55:05 +02:00
David Given
9733454d8e Clang-format before editing. 2018-09-10 22:42:30 +02:00
David Given
976fa0efca Clang-format before editing. 2018-09-10 22:37:04 +02:00
David Given
6275896a11 Clang-format before editing. 2018-09-10 22:25:14 +02:00
David Given
185e910246 Lots more untested helper functions. 2018-09-10 01:08:25 +02:00
David Given
f8f6fa9fc1 Added some more incredibly untested helper functions. 2018-09-10 00:21:16 +02:00
David Given
ee328a0572 Merge from default. 2018-09-09 18:58:07 +02:00
David Given
776e93221f Thinko fix. 2018-09-09 18:57:44 +02:00
David Given
c769fbec93 Use the correct ELF processor flags; align properly. 2018-09-09 18:57:35 +02:00
David Given
f3bc9ef92a Call proper Linux system calls proper-like. 2018-09-09 18:57:12 +02:00
David Given
bb15c03339 Remember to preserve input registers if we're going to be reading from them
after writing to the output register.
2018-09-09 18:53:49 +02:00
David Given
79fd34dac6 Call atexit handlers properly, avoiding a NPE and seg fault every time a
program exits.
2018-09-09 18:51:00 +02:00
David Given
e88670dad4 Yikes! Turns out that FPU registers are only 32 bits wide, and doubles are
stored in pairs, just like on the PowerPC!
2018-09-09 18:25:00 +02:00
David Given
ec46643124 Allow the ELF processor flags to be set. Generate MIPS ELF executables, not
PowerPC ones.
2018-09-09 14:29:34 +02:00
David Given
5dfef6f180 Rework relocations again: add RELO2HI and RELO2HISAD for the high two bytes of
a word.
2018-09-09 14:11:11 +02:00
David Given
95dd6f0141 Fix some niggling issues --- we have our first binary now! 2018-09-09 12:24:22 +02:00
David Given
b3b7c684c6 Simplify MIPS relocations. Add RELS2 (for generic high-word relocations). Add
support for MIPS branch-and-jump relocations.
2018-09-09 12:23:59 +02:00
David Given
0d8d98fd0f Warning fix. 2018-09-09 12:22:59 +02:00
David Given
d2a1d4dcda Added some very untested csa and csb implementations, based on the PowerPC
ones.
2018-09-08 23:12:57 +02:00
David Given
75308901bc Added hi[] and lo[] functions to the assembler; fix things enough that we now
get to the point of failing to link programs.
2018-09-08 22:42:06 +02:00
David Given
379c1a4a3c Rework floating point conversion. Bash enough of the table into workingness
that the libraries build now.
2018-09-08 22:06:38 +02:00
David Given
d2c14ca44f Precisely one stack hreg gets allocated for each vreg/congruence group for
eviction; this prevents us from having to worry about moving values from stack
slot to stack slot, which is hard.
2018-09-08 18:59:55 +02:00
David Given
b7a1c96986 MIPS appears to hate converting unsigneds to floats and vice versa. 2018-09-05 23:53:38 +02:00
David Given
fc0b0ae178 (Slightly) better errors on phi congruence group mismatches. 2018-09-05 23:53:08 +02:00
David Given
7fbce066f8 We attempt to compile the first library function; we fail. 2018-09-05 00:13:01 +02:00
David Given
26fe3f7530 Added library skeletons. 2018-09-05 00:07:07 +02:00
David Given
98afb42095 Added a boot.o based on the PowerPC one. 2018-09-05 00:00:13 +02:00
David Given
26c0228b14 The examples all compile now (probably incorrectly, and the libc doesn't
compile yet).
2018-09-04 23:55:28 +02:00
David Given
9d80756253 Lots of assembler and rule bugfixing. 2018-09-04 23:43:24 +02:00
David Given
fe5ca5a85f Added li and la instructions. 2018-09-03 22:47:41 +02:00
David Given
26f9b4ceae Add in floating point support to the code generator. 2018-09-03 22:06:05 +02:00
David Given
83cf1be6a8 mcgg now checks that registers have at most one type attribute set. 2018-09-03 22:03:57 +02:00
David Given
f8e71d888b Add some painfully untested FPU instructions. 2018-09-02 21:36:09 +02:00
David Given
1d6ecddcf4 The MIPS backend is still full of holes, and cut-and-pasted PowerPC code, but
is beginning to look like an actual code generator.
2018-09-02 18:57:25 +02:00
David Given
a023fd8591 Better error reporting for unterminated strings. 2018-09-02 18:55:44 +02:00
David Given
2eaca39322
Merge pull request #120 from davidgiven/dtrg-no
Remove the built-in preprocessor in cemcom.ansi
2018-09-02 13:15:11 +02:00
David Given
b76352de99 Remove stray #include. 2018-09-02 12:54:53 +02:00
David Given
cb983fac44 Rip out the built-in preprocessor from cemcom.ansi, now it's no longer used. 2018-09-02 12:50:50 +02:00
David Given
6931ffa5a4 Disable the built-in preprocessor in cemcom.ansi; the external preprocessor is
always run. Fix a bug in block skipping in the preprocessor.
2018-09-02 12:39:00 +02:00