                                      TALC
                                      ====

Release 1.6
Copyright
    Greg Morrisett, Neal Glew, Dave Walker, Steve Zdancewic, Stephanie Weirich,
    Frederick Smith, and Dan Grossman July, August, September 1998,
    January 1999 all rights reserved.

The TALC compiler consists of a set of tools for Talx86, a variant of
typed assembly language for the IA32 architecture, and some front ends
that demonstrate its viability as a target language.  Currently the
there are two front ends: popcorn and scheme.  There used to be a
third front end for KML, but it was broken by some changes to
Talx86.  A major rework of the KML front end is underway.

There is now a scheme compiler written in popcorn.  It uses a tal datatype
and printer also written in popcorn.  To build it, go to apps/popcorn and run
make scheme.

Popcorn now includes extensions called cyclone for doing runtime code
generation.

See the file INSTALL for instructions on building and running TALC.

See the files doc/TODO and doc/CHANGES for information about what has been
done and needs to done.

TALC Sources
------------

(* Documentation *)
doc
  CHANGES                    - master log of changes made to sources
  release-instructions.txt   - how to release TALC
  TODO               	     - master list of stuff to be done
  tal.el             	     - emacs 19.x mode for editing .tal & .tali files
  talx86_lang_spec   	     - specification of the lexing and syntax

(* General Purpose Programming Utilities/Data Structures *)
util
  binout
  bitmatrix
  dict
  numtypes
  set
  splay
  stringchan
  utilities
  xarray

(* Compiler Specific Utilities *)
computil
  header          - template for copyright notices
  identifier

(* TALx86 and Tools *)
talx86
  coff
  elf
  objfile
  tal
  talasm
  talasmx86
  talbe
  talcon
  talctxt
  tallex
  tallinkchk
  talout
  talparser
  talpp
  talverify

(* TAL Control flow graphs and tools *)
cfg
  cfg
  cfginstr
  cfgliveness
  cfgopt
  talutil

(* Register Allocator *)
regalloc
  regalloc
  regifg
  regrewrite

(* Runtime System, Garbage Collector *)
runtime
  cyclone.inc
  cyclonelib.c
  gc.lib              - Boehm Weiser collector
  pop_runtime.c       } Popcorn runtime
  pop_runtime.tali    }
  representation.doc  - some notes about sums, exceptions, and arrays
  stdlib.c            } Standard library of sorts
  stdlib.tali         }
  tal.inc
  tal.tali            } Program stuff
  tal_prog.tali       }
  tal_start.c
  tal_util.asm
  tal_util.tal
  tal_util_i.tali
  tal_util_e.tali

(* Toplevel Driver *)
toplevel
  gcd
  gcdfe
  gcdfec
  lineno
  talc

(* Popcorn Compiler *)
popcorn
  calc    - A calculator example
  plan    - An unfinished PLAN interpreter
  README
  popcompile
  popcompilereg
  popcorn
  poperr
  poplex
  popparse
  poppeep
  popsyntax
  poptype

(* Scheme Compiler *)
scheme
  sast
  scheme
  sclib.c     - standard library needed by compiler
  scomp
  sil
  slex
  sparse
  std-lib.ss  - scheme standard libarry

(* Compiler Tests *)
tests
  cyclone
    interpret
  popcorn
  scheme
  talx86

(* Applications *)
apps
  popcorn
    README
    Makefile
    util
    talx86
    scheme
