Commit graph

2636 commits

Author SHA1 Message Date
carl 1636b9b52d Add function prototypes. 2019-03-25 00:11:55 +08:00
carl 180d3388d6 Add function prototypes. 2019-03-25 00:11:43 +08:00
carl 98c5d1f0ee Add function prototypes. 2019-03-25 00:11:31 +08:00
carl ef3a6b3cc4 Add function prototypes. 2019-03-25 00:11:19 +08:00
carl 053c509fc9 Add function prototypes. 2019-03-25 00:10:58 +08:00
carl 2f84fc92cf Add function prototypes. 2019-03-25 00:10:45 +08:00
carl 2dd0d0f81b Add function prototypes. 2019-03-25 00:10:32 +08:00
carl 143da61d13 Add function prototypes. 2019-03-25 00:10:20 +08:00
carl dac3d0b10c Add function prototypes. 2019-03-25 00:10:10 +08:00
George Koehler bec236c108 Include more headers to declare functions.
This causes clang to give fewer warnings of implicit declarations of
functions.

In mach/pdp/cv/cv.c, rename wr_int2() to cv_int2() because it
conflicts with wr_int2() in <object.h>.

In util/ack, rename F_OK to F_TRANSFORM because it conflicts with F_OK
for access() in <unistd.h>.
2019-03-22 15:59:35 -04:00
David Given 88fd7b3cdc Add a 'kill' pseudoinstruction to the 8080 assembler, which marks when the code
generator is finished with a register; use this to create some more effective
peephole optimiser rules.
2019-03-08 23:06:34 +01:00
David Given 12a0421988 Minor improvements to the way types are expanded (should avoid embarassing ands
with 0xff).
2019-02-17 10:09:22 +01:00
David Given 61d623c4d6 Add a few minor top optimisations. 2019-02-16 01:18:31 +01:00
David Given 6a8b298861 Fix typo where I was confusing sbi and sui, with hilarious results. 2019-02-16 01:18:21 +01:00
David Given 4474d6433a Loading large constants now computes the stack offset correctly. 2019-02-15 23:03:01 +01:00
David Given 34c67698ef Generate the proper function prologues for big stack frames. 2019-02-15 23:01:33 +01:00
David Given 8ca4d6ea1e Cleanup. 2019-02-15 22:26:14 +01:00
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 3c3d2a4520 Fix bad helper tool invocation for inl with faddrn. 2019-02-14 23:21:47 +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 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 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 f4b45f1ed7 Fix bad code generation due to not correctly flushing the stack before
comparisons.
2019-02-12 22:19:07 +01: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 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 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
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 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 58698bed19 Removed a whole bunch of old strcpy() prototypes in favour of <string.h>. 2019-02-10 13:20:04 +01:00
David Given 10b509d6b6 Add rst 3 to get the address of a frame variable; lots of rule overhaulage.
Reduces Star Trek from 41821 to 41055 bytes.
2019-02-09 13:29:41 +01:00
David Given 0de5001f82 Make sign extension much less horrible. 2019-02-08 23:16:57 +01:00
David Given 0ac145a0d1 Add tests for simple and, or, and xor; drastically improve the i80 code
generation for these.
2019-02-08 22:38:07 +01:00
David Given a91ab5c599 Somehow the implementation of rst 2 got lost, with hilarious results. Also fix
some register corruption issues (I hope).
2019-02-08 21:35:14 +01:00
David Given d319c7d679 Fix swapped bytes in probyte which was causing junk stack frames. 2019-02-08 08:09:55 +01:00
David Given a5bf2932c8 Add rst 1 to store frame variables. Reduces Star Trek from 42339 to 41821
bytes.
2019-02-07 09:31:38 +01:00
David Given 67a9be26d1 Fix warnings. 2019-02-07 09:09:31 +01:00
David Given 9d8ea79c7f rst 1 now takes an eight-bit parameter, not a 16 bit one. Reduces Star Trek
again from 43205 to 42339 bytes.
2019-02-07 08:45:20 +01:00
David Given 5ac280026e Experimentally use rst 1 to optimise frame variable loads. Reduces Star Trek
from 43892 to 43205 bytes.
2019-02-07 00:06:32 +01:00
David Given 08b92153a0 Use a helper function for cai --- only saves two bytes per invocation, but is
much less embarassing.
2019-02-06 20:36:23 +01:00
David Given 2b0629f87f Common out boilerplate function prologue code; shrinks Star Trek from 44256 to
43892 bytes.
2019-02-06 16:06:07 +01:00