Commit graph

7901 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