ack.git
7 years agoMove the array library into the data module.
David Given [Mon, 26 Sep 2016 20:24:49 +0000 (22:24 +0200)]
Move the array library into the data module.

7 years agoKeep more data around about ir instructions. Implement a half-baked type
David Given [Mon, 26 Sep 2016 20:12:46 +0000 (22:12 +0200)]
Keep more data around about ir instructions. Implement a half-baked type
inference routine to propagate information about floats up the tree, so we know
whether to put floats into special registers as early as possible.

7 years agoStart factoring out the hardware op code.
David Given [Sun, 25 Sep 2016 21:29:59 +0000 (23:29 +0200)]
Start factoring out the hardware op code.

7 years agoSort of keep track of registers and register classes. Start walking the
David Given [Sun, 25 Sep 2016 20:17:14 +0000 (22:17 +0200)]
Sort of keep track of registers and register classes. Start walking the
generated instruction tree --- holy cow, they look like instructions!

7 years agoCollapse several rule arrays into one; actually generate the array properly.
David Given [Sun, 25 Sep 2016 15:14:54 +0000 (17:14 +0200)]
Collapse several rule arrays into one; actually generate the array properly.

7 years agoRename struct insn to struct em (throughout).
David Given [Sun, 25 Sep 2016 10:29:03 +0000 (12:29 +0200)]
Rename struct insn to struct em (throughout).

7 years agoStupid stringlist is stupid. Use a proper data structure, properly abstracted
David Given [Sun, 25 Sep 2016 10:18:39 +0000 (12:18 +0200)]
Stupid stringlist is stupid. Use a proper data structure, properly abstracted
out (so other things can use it).

7 years agoRethink the way patterns are mapped to rules; generate emitters (probably
David Given [Sun, 25 Sep 2016 09:49:51 +0000 (11:49 +0200)]
Rethink the way patterns are mapped to rules; generate emitters (probably
badly).

7 years agoWe now record the code fragments to be emitted by each rule.
David Given [Sat, 24 Sep 2016 22:21:46 +0000 (00:21 +0200)]
We now record the code fragments to be emitted by each rule.

7 years agoInstruction selection is so important the file needs a longer name.
David Given [Sat, 24 Sep 2016 20:50:53 +0000 (22:50 +0200)]
Instruction selection is so important the file needs a longer name.

7 years agoSome instruction selection is now happening.
David Given [Sat, 24 Sep 2016 20:46:08 +0000 (22:46 +0200)]
Some instruction selection is now happening.

7 years agoMore grammar changes.
David Given [Sat, 24 Sep 2016 17:03:55 +0000 (19:03 +0200)]
More grammar changes.

7 years agoIR codes are now owned by mcgg; ir terminals are inserted into the table during
David Given [Sat, 24 Sep 2016 16:31:35 +0000 (18:31 +0200)]
IR codes are now owned by mcgg; ir terminals are inserted into the table during
compilation (so you can refer to them).

7 years agoCrudely bolt on mcgg to mcg itself.
David Given [Sat, 24 Sep 2016 15:20:40 +0000 (17:20 +0200)]
Crudely bolt on mcgg to mcg itself.

7 years agoParameters are parsed with getopt. Simplify, constify.
David Given [Sat, 24 Sep 2016 14:59:49 +0000 (16:59 +0200)]
Parameters are parsed with getopt. Simplify, constify.

7 years agoChange the predicate stuff to use costs instead; now you can use when clauses
David Given [Sat, 24 Sep 2016 11:33:59 +0000 (13:33 +0200)]
Change the predicate stuff to use costs instead; now you can use when clauses
on leaves. Remove an iburg premature optimisation (required for above).

7 years agoLots of exploratory new grammar for instruction definitions and string and
David Given [Sat, 24 Sep 2016 11:08:17 +0000 (13:08 +0200)]
Lots of exploratory new grammar for instruction definitions and string and
fragment emission (none of which is hooked up to anything yet).

7 years agoAdd support for labelled tree nodes.
David Given [Sat, 24 Sep 2016 10:11:30 +0000 (12:11 +0200)]
Add support for labelled tree nodes.

7 years agoFix some late-night typo bugs.
David Given [Fri, 23 Sep 2016 23:09:32 +0000 (01:09 +0200)]
Fix some late-night typo bugs.

7 years agoProcedure compilation now happens after the entire EM file has been read in (so
David Given [Fri, 23 Sep 2016 23:04:00 +0000 (01:04 +0200)]
Procedure compilation now happens after the entire EM file has been read in (so
that we can look inside data blocks which might be defined in the future...
sigh, csa and csb). csa and csb no longer generate invalid IR.

7 years agoReplaced the block splicer with a trivial block eliminator (which rewrites
David Given [Fri, 23 Sep 2016 21:59:15 +0000 (23:59 +0200)]
Replaced the block splicer with a trivial block eliminator (which rewrites
jumps to blocks which contain only a jump). Don't bother storing the bb graph
in the ir nodes; we can find it on demand by walking the tree instead ---
slower, but much easier to understand and more robust. Added a terrible map
library.

7 years agoEach pass now lives in its own source file; much cleaner.
David Given [Fri, 23 Sep 2016 19:07:16 +0000 (21:07 +0200)]
Each pass now lives in its own source file; much cleaner.

7 years agoAdd a bodged in algorithm for converting basic block communication from stacked
David Given [Thu, 22 Sep 2016 21:19:29 +0000 (23:19 +0200)]
Add a bodged in algorithm for converting basic block communication from stacked
variables to SSA. Also add dead block removal and block splicing. IR code is
much better now.

8 years agoTracing cleanup. Simplified the IR code. Some more opcodes.
David Given [Wed, 21 Sep 2016 22:15:48 +0000 (00:15 +0200)]
Tracing cleanup. Simplified the IR code. Some more opcodes.

8 years agoMassive grammar overhaul and refactor. Hacked in support for predicates, where
David Given [Tue, 20 Sep 2016 22:43:10 +0000 (00:43 +0200)]
Massive grammar overhaul and refactor. Hacked in support for predicates, where
instructions can be turned on and off based on their parameters. New lexer
using a lexer. Now quite a lot of the way towards being a real instruction
selector.

8 years agoRun through clang-format.
David Given [Tue, 20 Sep 2016 19:00:16 +0000 (21:00 +0200)]
Run through clang-format.

8 years agoStrip out surplus files. Rewrite README.
David Given [Tue, 20 Sep 2016 18:46:45 +0000 (20:46 +0200)]
Strip out surplus files. Rewrite README.

8 years agoImport iburg.
David Given [Tue, 20 Sep 2016 18:44:51 +0000 (20:44 +0200)]
Import iburg.

8 years agoImport iburg. iburg-import
David Given [Tue, 20 Sep 2016 18:37:16 +0000 (20:37 +0200)]
Import iburg.

8 years agoCreate hacky fake basic blocks for data fragments, used to track which
David Given [Mon, 19 Sep 2016 22:19:39 +0000 (00:19 +0200)]
Create hacky fake basic blocks for data fragments, used to track which
instruction labels descriptor blocks refer to; this allows csa and csb to know
where they're going.

8 years agoTreebuilder now gets to the bottom of my test file, merrily generating
David Given [Mon, 19 Sep 2016 21:30:41 +0000 (23:30 +0200)]
Treebuilder now gets to the bottom of my test file, merrily generating
(probably horribly broken) IR.

8 years agoStore the EM code up front and build the basic block graph *before*
David Given [Mon, 19 Sep 2016 21:06:59 +0000 (23:06 +0200)]
Store the EM code up front and build the basic block graph *before*
generating the IR code. Lots more IR code.

8 years agoArchival checking of the half-written IR treebuilder.
David Given [Sun, 18 Sep 2016 21:24:54 +0000 (23:24 +0200)]
Archival checking of the half-written IR treebuilder.

8 years agoANSIise to fix warnings.
David Given [Sat, 17 Sep 2016 22:23:42 +0000 (00:23 +0200)]
ANSIise to fix warnings.

8 years agoAbstract out the EM reader; skeleton of the tree builder.
David Given [Sat, 17 Sep 2016 22:02:16 +0000 (00:02 +0200)]
Abstract out the EM reader; skeleton of the tree builder.

8 years agoBasic skeleton of em parser.
David Given [Sat, 17 Sep 2016 20:21:47 +0000 (22:21 +0200)]
Basic skeleton of em parser.

8 years agoMerge pull request #3 from kernigh/ego-fix iburg
David Given [Sat, 10 Sep 2016 09:25:21 +0000 (11:25 +0200)]
Merge pull request #3 from kernigh/ego-fix

Fix bugs with memory allocation in ego.

8 years agoFix bugs with memory allocation in ego.
George Koehler [Sat, 10 Sep 2016 03:37:43 +0000 (23:37 -0400)]
Fix bugs with memory allocation in ego.

cf/cf_loop.c and share/put.c tried to read the next pointer in an
element of a linked list after freeing the element.  ud/ud_copy.c
tried to read beyond the end of the _defs_ array: it only has
_nrexpldefs_ elements, not _nrdefs_ elements.

These bugs caused core dumps on OpenBSD.  Its malloc() put _defs_ near
the end of a page, so reading beyond the end crossed into an unmapped
page.  Its free() wrote junk bytes and changed the next pointer to
0xdfdfdfdfdfdfdfdf.

8 years agoAdd unlink system call. buildsystem
David Given [Sun, 4 Sep 2016 17:23:02 +0000 (19:23 +0200)]
Add unlink system call.

8 years agoCleanup some stray files.
David Given [Sat, 3 Sep 2016 17:22:38 +0000 (19:22 +0200)]
Cleanup some stray files.

8 years agoAdd modeline, fix formatting.
David Given [Sat, 3 Sep 2016 17:17:09 +0000 (19:17 +0200)]
Add modeline, fix formatting.

8 years agoUpdated.
David Given [Sat, 3 Sep 2016 17:07:12 +0000 (19:07 +0200)]
Updated.

8 years agoMore documentation.
David Given [Sat, 3 Sep 2016 17:01:47 +0000 (19:01 +0200)]
More documentation.

8 years agoFirst half of the ackbuilder documentation.
David Given [Fri, 2 Sep 2016 23:04:16 +0000 (01:04 +0200)]
First half of the ackbuilder documentation.

8 years agoMakefiles are now slightly less inaccurate. Does actually seem to do sensible
David Given [Fri, 2 Sep 2016 22:20:11 +0000 (00:20 +0200)]
Makefiles are now slightly less inaccurate. Does actually seem to do sensible
incremental builds now. I loathe make.

8 years agoAdd an install target.
David Given [Fri, 2 Sep 2016 21:03:57 +0000 (23:03 +0200)]
Add an install target.

8 years agoDistributions are a pain --- let's not bother any more. Instead, we just tag
David Given [Fri, 2 Sep 2016 21:00:38 +0000 (23:00 +0200)]
Distributions are a pain --- let's not bother any more. Instead, we just tag
the repository and download a complete snapshot, old and ancient stuff and all.

8 years agoRemove the old make-based build system, plus some big chunks of horribly
David Given [Fri, 2 Sep 2016 20:17:51 +0000 (22:17 +0200)]
Remove the old make-based build system, plus some big chunks of horribly
obsolete protomake build system.

8 years agoClean up the top level makefile.
David Given [Thu, 1 Sep 2016 21:36:39 +0000 (23:36 +0200)]
Clean up the top level makefile.

8 years agoFix a fun bug where, every now again, ego would get its temporary files mangled
David Given [Mon, 22 Aug 2016 21:53:01 +0000 (23:53 +0200)]
Fix a fun bug where, every now again, ego would get its temporary files mangled
and generate invalid calls to the optimisers.

Previously ego would generate a temporary file template that looked like
/tmp/ego.A.BB.XXXXXX, call mktemp() on it to randomise the XXXXXX, and then
replace A and BB with data.

However, it used strrchr to find the A and B. Which would fine, except when
mktemp produced an A or a B in the randomised part...

This code was written on 4 March 1991. I was 16.

8 years agoForgot to check a file in.
David Given [Mon, 22 Aug 2016 20:45:32 +0000 (22:45 +0200)]
Forgot to check a file in.

8 years agoego now builds and is used.
David Given [Sun, 21 Aug 2016 20:01:19 +0000 (22:01 +0200)]
ego now builds and is used.

This needed lots of refactoring to ego --- not all platforms have ego descr
files, and ego will just crash if you invoke it without one. I think originally
it was never intended that these platforms would be used at -O2 or above.

Plats now only specify the ego descr file if they have one.

8 years agofilenamesof() an installable now returns all installed files, not just the ones
David Given [Sun, 21 Aug 2016 19:55:21 +0000 (21:55 +0200)]
filenamesof() an installable now returns all installed files, not just the ones
at the top level (necessary to make a lot of the dependency stuff work when
using tools which depend on installables).

8 years agoFix linking bug where em_decode would generate binary data instead of text.
David Given [Sun, 21 Aug 2016 18:27:52 +0000 (20:27 +0200)]
Fix linking bug where em_decode would generate binary data instead of text.

8 years agoRun through clang-format.
David Given [Sun, 21 Aug 2016 18:08:05 +0000 (20:08 +0200)]
Run through clang-format.

8 years agoRun through clang-format.
David Given [Sun, 21 Aug 2016 17:53:14 +0000 (19:53 +0200)]
Run through clang-format.

8 years agoRun through clang-format.
David Given [Sun, 21 Aug 2016 17:46:19 +0000 (19:46 +0200)]
Run through clang-format.

8 years agoRun through clang-format.
David Given [Sun, 21 Aug 2016 17:38:54 +0000 (19:38 +0200)]
Run through clang-format.

8 years agoRun through clang-format.
David Given [Sun, 21 Aug 2016 17:38:02 +0000 (19:38 +0200)]
Run through clang-format.

8 years agoPush through clang-format.
David Given [Sun, 21 Aug 2016 17:34:54 +0000 (19:34 +0200)]
Push through clang-format.

8 years agoRun through clang-format.
David Given [Sun, 21 Aug 2016 16:51:36 +0000 (18:51 +0200)]
Run through clang-format.

8 years agoPush em_ego.c through clang-format before working on it.
David Given [Sun, 21 Aug 2016 16:45:25 +0000 (18:45 +0200)]
Push em_ego.c through clang-format before working on it.

8 years agoBuild the examples when doing a normal build; this exercises the compiler as a
David Given [Sat, 20 Aug 2016 12:05:24 +0000 (14:05 +0200)]
Build the examples when doing a normal build; this exercises the compiler as a
whole and is one step further towards a proper test suite.

8 years agoaal doesn't build the ranlib table if you don't set -DAAL.
David Given [Sat, 20 Aug 2016 12:04:46 +0000 (14:04 +0200)]
aal doesn't build the ranlib table if you don't set -DAAL.

8 years agoAdd files which got missed in the initial build pass.
David Given [Sat, 20 Aug 2016 12:04:17 +0000 (14:04 +0200)]
Add files which got missed in the initial build pass.

8 years agoliblinux is no more; its files are now in libsys.
David Given [Sat, 20 Aug 2016 12:03:49 +0000 (14:03 +0200)]
liblinux is no more; its files are now in libsys.

8 years agorpi has a time() function; don't try to call gettimeofday().
David Given [Sat, 20 Aug 2016 12:03:19 +0000 (14:03 +0200)]
rpi has a time() function; don't try to call gettimeofday().

8 years agoPrint hex numbers actually properly this time.
David Given [Sat, 20 Aug 2016 12:02:12 +0000 (14:02 +0200)]
Print hex numbers actually properly this time.

8 years agoRaspberry Pi backend now builds.
David Given [Sat, 20 Aug 2016 10:40:13 +0000 (12:40 +0200)]
Raspberry Pi backend now builds.

8 years agoWildcards are allowed to match no files now.
David Given [Sat, 20 Aug 2016 10:40:00 +0000 (12:40 +0200)]
Wildcards are allowed to match no files now.

8 years agoFilename variables now get passed into ackbuilder on the command line.
David Given [Sun, 14 Aug 2016 22:47:08 +0000 (00:47 +0200)]
Filename variables now get passed into ackbuilder on the command line.

8 years agoFix dependency error (only shows up with make, not ninja. Odd).
David Given [Sun, 14 Aug 2016 22:46:43 +0000 (00:46 +0200)]
Fix dependency error (only shows up with make, not ninja. Odd).

8 years agoFix compiler warnings and 64bitisms.
David Given [Sun, 14 Aug 2016 21:01:12 +0000 (23:01 +0200)]
Fix compiler warnings and 64bitisms.

8 years agoEr, oops; the ninja build system is in a package called ninja-build.
David Given [Sun, 14 Aug 2016 20:55:10 +0000 (22:55 +0200)]
Er, oops; the ninja build system is in a package called ninja-build.

8 years agoBackport to Lua 5.1 (because 5.2 on Travis doesn't have luaposix...).
David Given [Sun, 14 Aug 2016 20:52:57 +0000 (22:52 +0200)]
Backport to Lua 5.1 (because 5.2 on Travis doesn't have luaposix...).

8 years agoAdd another Travis library.
David Given [Sun, 14 Aug 2016 20:41:54 +0000 (22:41 +0200)]
Add another Travis library.

8 years agoUpdate Travis metadata.
David Given [Sun, 14 Aug 2016 12:44:00 +0000 (14:44 +0200)]
Update Travis metadata.

8 years agoLED builds now.
David Given [Sun, 14 Aug 2016 12:40:01 +0000 (14:40 +0200)]
LED builds now.

8 years agoMove the em_code headers into the em_code module.
David Given [Sun, 14 Aug 2016 12:17:35 +0000 (14:17 +0200)]
Move the em_code headers into the em_code module.

8 years agoMove util/data into modules/src/em_data, for consistency with the other
David Given [Sun, 14 Aug 2016 12:09:38 +0000 (14:09 +0200)]
Move util/data into modules/src/em_data, for consistency with the other
modules.

8 years agolinux68k builds now.
David Given [Sun, 14 Aug 2016 09:34:18 +0000 (11:34 +0200)]
linux68k builds now.

8 years agoinstallables need to depend on their source files...
David Given [Sun, 14 Aug 2016 09:25:47 +0000 (11:25 +0200)]
installables need to depend on their source files...

8 years agoTurns out I wasn't building the syscall libraries. Do so.
David Given [Sun, 14 Aug 2016 09:23:57 +0000 (11:23 +0200)]
Turns out I wasn't building the syscall libraries. Do so.

8 years agoWasn't exporting the plat headers; refactor to make this a little cleaner.
David Given [Sun, 14 Aug 2016 09:01:36 +0000 (11:01 +0200)]
Wasn't exporting the plat headers; refactor to make this a little cleaner.

8 years agolinux386 builds. Also, forgot to turn back on the language runtimes.
David Given [Sun, 14 Aug 2016 08:37:55 +0000 (10:37 +0200)]
linux386 builds. Also, forgot to turn back on the language runtimes.

8 years agoBiggish refactor to break cycles; my build rules were full of them. cpm builds,
David Given [Sat, 13 Aug 2016 23:39:40 +0000 (01:39 +0200)]
Biggish refactor to break cycles; my build rules were full of them. cpm builds,
which requires top and topgen.

8 years agoAdd cycle detection, because it was ruining my day. Allow targets to be stored
David Given [Sat, 13 Aug 2016 23:38:36 +0000 (01:38 +0200)]
Add cycle detection, because it was ruining my day. Allow targets to be stored
in a file called build-<target>.lua to allow better dividing up of build rules
(to break cycles).

8 years agoPascal runtime library now builds.
David Given [Sat, 13 Aug 2016 11:07:19 +0000 (13:07 +0200)]
Pascal runtime library now builds.

8 years agoPascal compiler builds.
David Given [Sat, 13 Aug 2016 11:03:06 +0000 (13:03 +0200)]
Pascal compiler builds.

8 years agoModula-2 runtime library now builds.
David Given [Sat, 13 Aug 2016 10:43:44 +0000 (12:43 +0200)]
Modula-2 runtime library now builds.

8 years agoFixed a small bug where two line number directives next to each other wouldn't
David Given [Sat, 13 Aug 2016 10:21:16 +0000 (12:21 +0200)]
Fixed a small bug where two line number directives next to each other wouldn't
be parsed properly (the second one would be treated as Modula-2 syntax).

8 years agoThe Modula-2 compiler now builds.
David Given [Fri, 12 Aug 2016 22:02:21 +0000 (00:02 +0200)]
The Modula-2 compiler now builds.

8 years agoThe Basic runtime builds now.
David Given [Thu, 11 Aug 2016 22:24:40 +0000 (00:24 +0200)]
The Basic runtime builds now.

8 years agoThe Basic compiler works now.
David Given [Thu, 11 Aug 2016 22:19:51 +0000 (00:19 +0200)]
The Basic compiler works now.

8 years agoreplace() gets confused if you give it a singleton list as its parameter.
David Given [Thu, 11 Aug 2016 22:19:30 +0000 (00:19 +0200)]
replace() gets confused if you give it a singleton list as its parameter.

8 years agoReplaced the funky and hard-to-compile ACK malloc with a much smaller
David Given [Wed, 10 Aug 2016 22:30:32 +0000 (00:30 +0200)]
Replaced the funky and hard-to-compile ACK malloc with a much smaller
and simpler one stolen from K&R. libc builds now.

8 years agoMost of libc builds now (missing malloc).
David Given [Mon, 8 Aug 2016 21:55:47 +0000 (23:55 +0200)]
Most of libc builds now (missing malloc).

8 years agoTarget lists can now have keyed items ({["foo"] = "+target"); this is
David Given [Mon, 8 Aug 2016 21:55:23 +0000 (23:55 +0200)]
Target lists can now have keyed items ({["foo"] = "+target"); this is
used by both installable and by clibrary{} to allow headers to be
installed into subdirectories.

8 years agoWe can build our first C file.
David Given [Sun, 7 Aug 2016 19:56:53 +0000 (21:56 +0200)]
We can build our first C file.

8 years agoAdd check for undefined variables. Find undefined variables. Fix undefined
David Given [Thu, 4 Aug 2016 22:01:55 +0000 (00:01 +0200)]
Add check for undefined variables. Find undefined variables. Fix undefined
variables.