Commit graph

7801 commits

Author SHA1 Message Date
David Given c9467b683a Add rules for converting smallnconst2 and smallpconst2 to registers, to stop
the conversion from happening via the stack. Star Trek goes from 39450 to 39384
bytes.
2019-02-15 22:20:07 +01:00
David Given afd45acb89 Using regpair instead of hl_or_de is not, in fact, safe until we've stopped
using bc.
2019-02-15 21:38:17 +01:00
David Given d63a359a49 Fix nearly all the comparisons, a lot of which were broken. Using a rst for
unsigned comparisons is surprisingly not that useful due to marshalling
overhead; it's only four bytes to do inline (plus jc), or six for a constant.
Also add some useful top optimisations.  Star Trek goes from 39890 to 39450
bytes.
2019-02-15 21:30:27 +01:00
David Given 91c75f81b5 Call cmps rather than cmpu for bge... make cmps and cmpu rsts. Apply various
other tiny optimisations.
2019-02-15 00:38:39 +01:00
David Given 2924ce8ffa Use nicely optimised helper tools to do signed comparisons of words. Star Trek
goes from 40452 to 39890 bytes.
2019-02-14 23:57:55 +01:00
David Given 0694cf34b0
Merge pull request #165 from davidgiven/dtrg-b164
i80: fix bad code in inl using faddrn
2019-02-14 23:29:41 +01:00
David Given 3c3d2a4520 Fix bad helper tool invocation for inl with faddrn. 2019-02-14 23:21:47 +01:00
David Given cf6041c57f Add failing test case. 2019-02-14 23:19:11 +01:00
David Given 44c8b53a2d
Merge pull request #163 from davidgiven/dtrg-regmoves
i80: fix pathological behaviour in asp
2019-02-14 00:13:41 +01:00
David Given 8eaa11ac72 Turns out that every time the compiler tried to do a stack retraction with asp,
it would flush registers onto the stack. This stops it doing this. Star Trek
goes from 40779 to 40452 bytes.
2019-02-14 00:05:08 +01:00
David Given 2deead3d3d
Merge pull request #161 from davidgiven/dtrg-faststack
i80: use helper functions for stack access
2019-02-13 22:56:18 +01:00
David Given 6e3ba8e9a0 Merge from default. 2019-02-13 22:46:00 +01:00
David Given 79a38ecc08 Instead 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.
2019-02-13 22:45:22 +01:00
David Given f70659f460 Don't do weird things if files starting with a hyphen exist in the build
directory.
2019-02-13 22:42:05 +01:00
David Given 37ded7e65d
Merge pull request #160 from davidgiven/dtrg-b159
i80, powerpc, mips: fix issue with logical operations and signed small constants
2019-02-13 21:16:06 +01:00
David Given 8200f041c2 Fix issue with logical operations and small signed constants which turned out
to affect multiple platforms.
2019-02-13 20:56:10 +01:00
David Given eb57db75a4 Update test case to provoke bug. 2019-02-13 20:10:38 +01:00
David Given 55f3880f43
Merge pull request #158 from davidgiven/dtrg-b157
i80: fix bad code in comparisons
2019-02-12 22:29:01 +01:00
David Given f4b45f1ed7 Fix bad code generation due to not correctly flushing the stack before
comparisons.
2019-02-12 22:19:07 +01:00
David Given a2b5202081 Added a test case for #157. 2019-02-12 22:08:08 +01:00
David Given 073451dd44
Merge pull request #154 from ccodere/buildfix
Bugfix of compilation on gcc 4.8
2019-02-12 21:51:46 +01:00
carl 664338aa49 Fix compilation issue on C90 compilers (gcc 4.8 was failing to compile with default flags) - updated following comment. 2019-02-13 00:17:45 +08:00
David Given 360e1525ae Replace 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.
2019-02-12 11:57:37 +01:00
David Given ee716754d3
Merge pull request #156 from davidgiven/dtrg-arraysizes
i80: add 8085 instruction support
2019-02-11 21:35:16 +01:00
David Given e8994afdf0 Apply Alan Cox's patch to add the 8085 extended instructions to the i80
assembler.
2019-02-11 21:14:35 +01:00
David Given ae6ea14e93
Merge pull request #155 from davidgiven/dtrg-arraysizes
i80: fix signed comparisons
2019-02-11 21:09:52 +01:00
David Given f1b128baeb Signed 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.
2019-02-11 20:46:06 +01:00
carl c63f527dde Fix compilation issue on C90 compilers (gcc 4.8 was failing to compile with default flags). 2019-02-12 00:46:09 +08:00
David Given 34e9573929 Merge from default. 2019-02-10 23:40:07 +01:00
David Given 1564e65c2d Add tests for simple comparisons (which i80 fails). 2019-02-10 23:39:15 +01:00
David Given 3991a0db3a
Merge pull request #153 from davidgiven/dtrg-i80
i80: more code generator improvements
2019-02-10 19:45:00 +01:00
David Given fca54ccc1b Improve subtractions, using dad and inline constants where possible. Shrinks
Star Trek from 39740 to 39656 bytes.
2019-02-10 19:40:48 +01:00
David Given 7d34cd7407 Simplify simple comparisons and use inlie constants where possible. Reduces
Star Trek from 39771 to 39740 bytes.
2019-02-10 19:22:43 +01:00
David Given 35d1f36ca4 Use 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.
2019-02-10 18:57:20 +01:00
David Given b34ff2bdec Teach 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.
2019-02-10 18:44:47 +01:00
David Given 608e386ca4
Merge pull request #152 from davidgiven/dtrg-osx
Enable OSX builds again.
2019-02-10 16:40:16 +01:00
David Given c95d5db372 Replace mkstemp() with the more modern and safer and simpler tmpfile(). 2019-02-10 14:36:15 +01:00
David Given 63fa647bc9 freopen() appears to be problematic on OSX; as it's only ever used to rewind
files, replace with rewind().
2019-02-10 14:32:17 +01:00
David Given 1dfafe070c Better error reporting. 2019-02-10 14:19:18 +01:00
David Given 813595358c More common symbol removal. 2019-02-10 14:09:52 +01:00
David Given d37749750d More common symbol fixing. 2019-02-10 14:03:55 +01:00
David Given 58698bed19 Removed a whole bunch of old strcpy() prototypes in favour of <string.h>. 2019-02-10 13:20:04 +01:00
David Given c8c48221b3 Second try at removing common symbols. 2019-02-10 13:11:03 +01:00
David Given 8a7077d5a9 Change the way external symbols are defined to avoid COMMON symbols, which
don't work on OSX very well.
2019-02-10 12:57:22 +01:00
David Given 666d9a3edb Add stray header. 2019-02-10 12:57:00 +01:00
David Given 020e910560 Remember that we need to update the generated file in LLgen, as it's not
self-bootstrapping...
2019-02-10 12:38:33 +01:00
David Given dd35aa3eef We don't need depth 10 in the travis checkout. 2019-02-10 12:35:18 +01:00
David Given 65e544c35a Don't prototype strcpy as it makes OSX sad. 2019-02-10 12:28:42 +01:00
David Given 7cdd0cd5c0 Merge from default. 2019-02-10 12:22:59 +01:00
David Given aa6aefdaa0 Add missing header. 2019-02-10 00:45:09 +01:00