79a38ecc08Instead of using parameterised rsts for stack access, add a huge swathe of automatically built helper tools. Star Trek goes up from 40243 to 40779 bytes, but should be a lot faster.
David Given
2019-02-13 22:45:22 +0100
f70659f460Don't do weird things if files starting with a hyphen exist in the build directory.
David Given
2019-02-13 22:42:05 +0100
Merge pull request #160 from davidgiven/dtrg-b159
David Given
2019-02-13 21:16:06 +0100
8200f041c2Fix issue with logical operations and small signed constants which turned out to affect multiple platforms.
David Given
2019-02-13 20:56:10 +0100
eb57db75a4Update test case to provoke bug.
David Given
2019-02-13 20:10:38 +0100
Merge pull request #154 from ccodere/buildfix
David Given
2019-02-12 21:51:46 +0100
664338aa49Fix compilation issue on C90 compilers (gcc 4.8 was failing to compile with default flags) - updated following comment.
carl
2019-02-13 00:17:45 +0800
360e1525aeReplace the non-working Z80 style signed comparison sign adjustment with something which actually works on the 8080. Sadly, Star Trek is up to 40243 bytes again.
David Given
2019-02-12 11:57:37 +0100
Merge pull request #155 from davidgiven/dtrg-arraysizes
David Given
2019-02-11 21:09:52 +0100
f1b128baebSigned comparisons now work correctly; sadly, Star Trek increases from 39656 to 39726 bytes. Note that the emulator doesn't set P/V correctly and all the tests fail. Testing in z80ex works fine.
David Given
2019-02-11 20:46:06 +0100
c63f527ddeFix compilation issue on C90 compilers (gcc 4.8 was failing to compile with default flags).
carl
2019-02-12 00:46:09 +0800
34e9573929Merge from default.
David Given
2019-02-10 23:40:07 +0100
1564e65c2dAdd tests for simple comparisons (which i80 fails).
David Given
2019-02-10 23:39:15 +0100
Merge pull request #153 from davidgiven/dtrg-i80
David Given
2019-02-10 19:45:00 +0100
fca54ccc1bImprove subtractions, using dad and inline constants where possible. Shrinks Star Trek from 39740 to 39656 bytes.
David Given
2019-02-10 19:40:48 +0100
7d34cd7407Simplify simple comparisons and use inlie constants where possible. Reduces Star Trek from 39771 to 39740 bytes.
David Given
2019-02-10 19:22:43 +0100
35d1f36ca4Use pop rather than inx;inx to retract the stack; consumes a register but halves the number of calls. Reduces Star Trek from 39976 to 39771 bytes.
David Given
2019-02-10 18:57:20 +0100
b34ff2bdecTeach the i80 code generator how to do left shifts by using dad hl; prevents it from calling out to .sli2 for simple shifts. Shrinks Star Trek from 40055 bytes to 39976.
David Given
2019-02-10 18:44:47 +0100
Merge pull request #152 from davidgiven/dtrg-osx
David Given
2019-02-10 16:40:16 +0100
c95d5db372Replace mkstemp() with the more modern and safer and simpler tmpfile().
David Given
2019-02-10 14:36:15 +0100
63fa647bc9freopen() appears to be problematic on OSX; as it's only ever used to rewind files, replace with rewind().
David Given
2019-02-10 14:32:17 +0100
1dfafe070cBetter error reporting.
David Given
2019-02-10 14:19:18 +0100
813595358cMore common symbol removal.
David Given
2019-02-10 14:09:52 +0100
d37749750dMore common symbol fixing.
David Given
2019-02-10 14:03:55 +0100
58698bed19Removed a whole bunch of old strcpy() prototypes in favour of <string.h>.
David Given
2019-02-10 13:20:04 +0100
c8c48221b3Second try at removing common symbols.
David Given
2019-02-10 13:11:03 +0100
8a7077d5a9Change the way external symbols are defined to avoid COMMON symbols, which don't work on OSX very well.
David Given
2019-02-10 12:57:22 +0100
666d9a3edbAdd stray header.
David Given
2019-02-10 12:57:00 +0100
020e910560Remember that we need to update the generated file in LLgen, as it's not self-bootstrapping...
David Given
2019-02-10 12:38:33 +0100
dd35aa3eefWe don't need depth 10 in the travis checkout.
David Given
2019-02-10 12:35:18 +0100
65e544c35aDon't prototype strcpy as it makes OSX sad.
David Given
2019-02-10 12:28:42 +0100
7cdd0cd5c0Merge from default.
David Given
2019-02-10 12:22:59 +0100
aa6aefdaa0Add missing header.
David Given
2019-02-10 00:45:09 +0100
Merge pull request #149 from davidgiven/dtrg-arraysizes
David Given
2019-02-09 13:40:36 +0100
343cdf7983Remove stray z80ex reference.
David Given
2019-02-09 13:30:29 +0100
10b509d6b6Add rst 3 to get the address of a frame variable; lots of rule overhaulage. Reduces Star Trek from 41821 to 41055 bytes.
David Given
2019-02-09 13:29:41 +0100
f9a3baeaf7Ugh, typo fix.
David Given
2019-02-09 12:25:27 +0100
6c146e8c05Maybe the setup script is somewhere else?
David Given
2019-02-09 12:23:42 +0100
e62b113b0aTry to install cygwin packages.
David Given
2019-02-09 12:17:57 +0100
369e3300acAnother try at an AppVeyor build script.
David Given
2019-02-09 12:04:42 +0100
27b8312598Add experimental appveyor file.
David Given
2019-02-09 00:07:33 +0100
9e2d45b301Rename all files called 'aux.*' to something else; Windows can't handle them.
David Given
2019-02-09 00:02:41 +0100
Merge pull request #145 from davidgiven/dtrg-arraysizes
David Given
2019-02-08 21:53:56 +0100
19f5ee3399CP/M sbrk now handles overflow correctly.
David Given
2019-02-08 21:43:52 +0100
a91ab5c599Somehow the implementation of rst 2 got lost, with hilarious results. Also fix some register corruption issues (I hope).
David Given
2019-02-08 21:35:14 +0100
22032575c5Add a 'disassemble' command to the CP/M emulator.
David Given
2019-02-08 20:54:44 +0100
d319c7d679Fix swapped bytes in probyte which was causing junk stack frames.
David Given
2019-02-08 08:09:55 +0100
b47d59aa4aMerge from default.
David Given
2019-02-07 23:45:47 +0100
Merge pull request #146 from davidgiven/dtrg-cpmemu
David Given
2019-02-07 23:45:08 +0100
8876ddcad2Build the CP/M tests (which got turned off accidentally). Add a disassembler to the emulator debugger.
David Given
2019-02-07 23:36:45 +0100
80bfbd17b7Add missing file.
David Given
2019-02-07 23:01:10 +0100
7473601172Add the cpm emulator from Cowgol, modified to work with an 8080 emulator rather than libz80ex; enable tests for cpm.
David Given
2019-02-07 22:39:57 +0100
a5bf2932c8Add rst 1 to store frame variables. Reduces Star Trek from 42339 to 41821 bytes.
David Given
2019-02-07 09:31:38 +0100
67a9be26d1Fix warnings.
David Given
2019-02-07 09:09:31 +0100
9d8ea79c7frst 1 now takes an eight-bit parameter, not a 16 bit one. Reduces Star Trek again from 43205 to 42339 bytes.
David Given
2019-02-07 08:45:20 +0100
5ac280026eExperimentally use rst 1 to optimise frame variable loads. Reduces Star Trek from 43892 to 43205 bytes.
David Given
2019-02-07 00:06:32 +0100
Merge pull request #133 from davidgiven/dtrg-mips
David Given
2018-09-22 17:30:52 +0200
ed91ea4371When parsing constants which don't fit into an arith, handle overflow properly (and don't turn them all into INT_MAX...).
David Given
2018-09-22 12:45:59 +0200
Merge pull request #132 from davidgiven/dtrg-mips
David Given
2018-09-22 11:04:13 +0100
79e7636537Teach the code generator about the zero register and how to efficiently access the stack.
David Given
2018-09-22 11:49:13 +0200
99fcde69dcTake hreg aliases into account when finding evicted registers and performing the register shuffle dance.
David Given
2018-09-22 11:19:50 +0200
bbb708717aAdd the OPTIONS clause to the mcgg grammar; add an optional pass which converts sequences of PUSHes to a single STACKADJUST followed by STOREs. This should dramatically improve code on stack-unfriendly architectures like MIPS.
David Given
2018-09-22 11:19:00 +0200
Merge pull request #131 from davidgiven/dtrg-mips
David Given
2018-09-20 23:05:55 +0100
985d3dc7d1Remove some old, hopefully unused PowerPC code. Teach the code generator about non-volatile long registers.
David Given
2018-09-20 23:30:38 +0200
65a20ce2d6Fix subtle register corruption bug where aliases weren't taken into account when assigning input registers to phis, which could cause the same hreg to be assigned to two vregs of different types. Also improve tracing.
David Given
2018-09-20 23:24:46 +0200
436d50b54cCreate correctly sized csa descriptors in the Basic compiler.
David Given
2018-09-20 00:49:31 +0200
cb20856aeaA few more minor optimisations.
David Given
2018-09-20 00:39:13 +0200
ac856f3b09The approach I was taking to csa and csb turns out not to work --- critical edge splitting can cause new basic blocks to be added to the graph, but while the graph itself gets properly rewritten the descriptor tables can't be updated to take these into account, so they end up pointing at the wrong blocks. This causes really hard-to-debug problems.
David Given
2018-09-20 00:12:03 +0200
ac921080b7Fix incorrect ori encoding.
David Given
2018-09-20 00:06:26 +0200
8fda024ec8Remember to save longs and doubles. Yikes.
David Given
2018-09-19 00:09:50 +0200
365c89c9e7Updated READMEs with the MIPS platform.
David Given
2018-09-18 23:49:31 +0200