# do not edit -- automatically generated by arch changelog
# arch-tag: automatic-ChangeLog--jak76@columbia.edu--scheme/sassy--mainline--0.2.1
#

2006-09-06 00:32:37 GMT	Jonathan Kraut <jak76@columbia.edu>	patch-25

    Summary:
      Fix last bug fix
    Revision:
      sassy--mainline--0.2.1--patch-25

    Fix for last bug fix - didn't handle 'void correctly. Also catch numbers early in the macro expander
    

    modified files:
     macros.scm parse.scm


2006-09-05 23:55:50 GMT	Jonathan Kraut <jak76@columbia.edu>	patch-24

    Summary:
      Bug fix for parse
    Revision:
      sassy--mainline--0.2.1--patch-24

    Stop re-invoking sassy-expand on top level (begin ...), courtesy of FSK.
    

    modified files:
     parse.scm


2006-09-05 18:22:00 GMT	Jonathan Kraut <jak76@columbia.edu>	patch-23

    Summary:
      Added optional user-section to sassy-make-elf
    Revision:
      sassy--mainline--0.2.1--patch-23

    Extended the interface to sassy-make-elf to allow for an optional user section.
    
    (sassy-make-elf <path> <sassy-output> [<user-name> <user-data>] )
    
    Both user-name and user-data must be given in order to use this mechanism.
    User-name is a symbol, and user-data is a string.
    
    When these are present, sassy-make-elf adds a section to the elf-object with
    section-type SHT_LOUSER.  In the section header table, the section
    will be given user-name, and the contents of the section will be the
    contents of the string.
    
    The intention is to allow the encoding of custom info a compiler might
    need (for instance, type info of exported procedures, special linking
    information etc) without resorting to separate header (.h) files or
    needing the original source code.
    
    
    

    modified files:
     elf.scm


2006-09-03 04:32:49 GMT	Jonathan Kraut <jak76@columbia.edu>	patch-22

    Summary:
      Added offset syntax to (align ...)
    Revision:
      sassy--mainline--0.2.1--patch-22

    Applied FSK's patch for a local offset to an align special form with changes and cleanups.
    
    The syntax is:
    
    (align <aligner> <offset>? )
    
    If the the optional <offset> (an integer) is given, compute the actual
    alignment based on <aligner>, and then add the offset to obtain the
    final location in the section. If the offset is negative and this
    would cause the new alignment to be less than the current size of the
    section, throw an error.
    
    this is ok, and puts foo at 3:
    
    (text
      (nop)
      (nop)
      (align 4 -1)
      (label foo))
    
    this is an error, because foo would be at 1
    
    (text
      (nop)
      (nop)
      (align 4 -3)
      (label foo))

    modified files:
     parse.scm push-stacks.scm


2006-09-03 03:19:07 GMT	Jonathan Kraut <jak76@columbia.edu>	patch-21

    Summary:
      Added quoted labels, handle empty strings
    Revision:
      sassy--mainline--0.2.1--patch-21

    Added facility for quoted labels, which the macro expander ignores.
    Whenever you write 'foo or (quote foo), "foo" is interpreted as a label, not the binding of a macro, so you can write:
    
    (text
      (label '> ...)
      ...
      (jmp '>))
    
    And all will be copacetic.
    
    
    In a data section only, if a string is empty and used as data, push no bytes.

    modified files:
     intern.scm macros.scm operands.scm parse.scm sassy.scm
     text.scm


2006-08-08 02:32:56 GMT	Jonathan Kraut <jak76@columbia.edu>	patch-20

    Summary:
      fix for chicken
    Revision:
      sassy--mainline--0.2.1--patch-20

    wrong file name sassy-chicken.scm

    modified files:
     sassy-chicken.scm


2006-08-08 02:30:19 GMT	Jonathan Kraut <jak76@columbia.edu>	patch-19

    Summary:
      Re-org of opcodes.scm, bug fixes, rel reloc clarification
    Revision:
      sassy--mainline--0.2.1--patch-19

    Opcodes.scm re-organized:
      - Got rid of all assignment in this file, which was the main
        show-stopper in terms of making sassy safely re-entrant (not totally
        there yet though).
    
      - Re-organized things a bit to help this mess load/compile faster.
    
    You can now use operands you would normally only use in repe, in rep as
    well, since they are the same prefix.
    
    The shift.scm test wasn't being completely generated and tested. Fixed.
    
    Properly throw an exception when (reloc rel <target> <value>) happens - rel relocs aren't allowed to have a <value>.
    
    Rel relocs, when used as operands to instructions which don't automatically perform a relative calculation (like jmp), where defaulting too, and being processed as an abl reloc. Fixed.
    
    Add moves to and from the test registers (trX), and corrected a couple
    operand sizes (cmpxchg8b).

    removed files:
     inits/.arch-ids/mzscheme-209.scm.id inits/mzscheme-209.scm

    modified files:
     TODO opcodes.scm operands.scm sassy.scm
     tests/generate-nasm.scm tests/shift tests/shift.asm
     tests/shift.scm tests/shift16 tests/shift16.asm


2006-08-03 18:52:51 GMT	Jonathan Kraut <jak76@columbia.edu>	patch-18

    Summary:
      Chicken build, Fixed bug in raw bytes in text, mz-scheme209
    Revision:
      sassy--mainline--0.2.1--patch-18

    Fixed up the chicken build files to reflect latest changes.
    
    Fixed a bug in opcodes.scm when parsing "raw-bytes"
    
    Put back support for mzscheme-209
    
    

    new files:
     inits/.arch-ids/mzscheme-209.scm.id inits/mzscheme-209.scm

    modified files:
     inits/petit-0.92.scm opcodes.scm sassy-chicken.scm sassy.scm


2006-08-01 06:10:08 GMT	Jonathan Kraut <jak76@columbia.edu>	patch-17

    Summary:
      Basics in place for thread safety/re-entrancy
    Revision:
      sassy--mainline--0.2.1--patch-17

    Put the basics in place for making Sassy thread safe and the procedure "sassy" safely re-entrant. Big re-organization of opcodes.scm to do this.
    
    Still to do: parameterize sassy-current and sassy-expand, and this
    task will be done.
    

    modified files:
     opcodes.scm parse.scm sassy.scm text-block.scm text.scm


2006-07-31 23:12:06 GMT	Jonathan Kraut <jak76@columbia.edu>	patch-16

    Summary:
      Refectoring of opcodes
    Revision:
      sassy--mainline--0.2.1--patch-16

    Starting to try and refactor some stuff in opcodes.scm for clarity and thread-safeness.
    

    modified files:
     opcodes.scm sassy.scm


2006-07-30 16:18:19 GMT	Jonathan Kraut <jak76@columbia.edu>	patch-15

    Summary:
      Optimization part 2
    Revision:
      sassy--mainline--0.2.1--patch-15

    Every time a top level item in a text section was processed, a new text-block was created and we dispatched to text.scm, which could mean doing this once per *instruction*. This was egregiously slow and has been cleaned up. Now process-text in parse.scm gathers as many instructions in a row that it can, and the processess that.
    
    Also added an init file to inits for petit-larceny-0.92. It assumes that LARCENY_ROOT points to the larceny-0.92-src directory.

    new files:
     inits/.arch-ids/petit-0.92.scm.id inits/petit-0.92.scm

    modified files:
     TODO macros.scm parse.scm sassy.scm


2006-07-28 15:38:59 GMT	Jonathan Kraut <jak76@columbia.edu>	patch-14

    Summary:
      Minor bugs in guile, scheme48 inits
    Revision:
      sassy--mainline--0.2.1--patch-14

    Just a few cleanups to get libraries loaded correctly.
    

    modified files:
     inits/guile-1.7.91.scm sassy-48.scm sassy.scm


2006-07-28 15:17:46 GMT	Jonathan Kraut <jak76@columbia.edu>	patch-13

    Summary:
      Part 1 of optimiziation - removed meta-lambda, added dont-expand option
    Revision:
      sassy--mainline--0.2.1--patch-13

    Meta-lambda (sassy's old parsing macro) has been completely excised from the tree, because it worked by consing up a list and calling apply with the parser action on that list. This was slow and alloc intensive. The parsing code has been replaced with normal scheme cases and conds, or in the case of opcodes.scm, with a macro called "mini-meta" that can handle the subset of meta-lambda that the opcode parsers were written in. Mini-meta only pushes environment (stack), and does not call apply. This has improved run time by around a factor of 2 (in mzscheme).
    
    Added an option to the procedure sassy:
    
    'dont-expand
    
    When this is present, sassy will not perform any macro expansion on any part of the program (so this works when using a restricted subset of the full sassy language.) Gains about 15% (in mzscheme).
    
    eg you write:
    
    (sassy "foo" 'dont-expand) ==> dont perform the expansion
    (sassy "foo")              ==> do perform the expansion
    
    


2006-07-28 15:15:39 GMT	Jonathan Kraut <jak76@columbia.edu>	patch-12

    Summary:
      Part 1 of optimiziation - removed meta-lambda, added dont-expand option
    Revision:
      sassy--mainline--0.2.1--patch-12

    Added an option to the procedure sassy:
    
    'dont-expand
    
    When this is present, sassy will not perform any macro expansion on any part of the program (so this works when using a restricted subset of the full sassy language.) Gains about 15% (in mzscheme).
    
    eg you write:
    
    (sassy "foo" 'dont-expand) ==> dont perform the expansion
    (sassy "foo")              ==> do perform the expansion
    
    

    removed files:
     .arch-ids/meta-lambda.scm.id meta-lambda.scm

    modified files:
     extras.scm macros.scm main.scm numbers.scm opcodes.scm
     operands.scm parse.scm push-stacks.scm sassy-48.scm
     sassy-chicken.scm sassy.scm tests/run-tests.scm text.scm


2006-06-08 22:13:34 GMT	Jonathan Kraut <jak76@columbia.edu>	patch-11

    Summary:
      More fixes for signed bytes. Raw bytes in text section.
    Revision:
      sassy--mainline--0.2.1--patch-11

    Round 2 of the necessary fixes for correct signed/unsigned immediate
    bytes as operands to opcodes. When usuing adc add and cmp or sbb sub
    xor, OR imul, if the operand is an immediate and can fit in a *signed*
    byte, the short encoding is used, otherwise the longer
    
    NEW: Can now output raw bytes into the text section. The following
    pseudo-opcodes are now available in the text section:
    
    (bytes <item> ...)
    (words <item> ...)
    (dwords <item> ...)
    
    The items can be numbers, characters, strings, or labels (including
    custom relocs). Zero-filling of strings follows the same conventions
    as in the data section (and thus strings of any length are permitted -
    the normal restrictions on the lengths of strings when using strings
    as operands are NOT in effect here).
    
    As far as flow control is concerned, each occurence of the above is
    considered an indivisible "opcode".
    
    
    
    
    

    modified files:
     TODO opcodes.scm operands.scm


2006-05-22 21:44:23 GMT	Jonathan Kraut <jak76@columbia.edu>	patch-10

    Summary:
      Fixed export/relative relocation interactions
    Revision:
      sassy--mainline--0.2.1--patch-10

    Keywords: As reported by Felix S Klock II: Relative relocations whose targets are exported weren't beging update properly. Fixed.
    
    

    modified files:
     sassy.scm text.scm


2006-05-16 08:49:36 GMT	Jonathan Kraut <jak76@columbia.edu>	patch-9

    Summary:
      Small bug fix for byte output
    Revision:
      sassy--mainline--0.2.1--patch-9

    Keywords: Negative immediate bytes in text for certain instructions were skipping the conversion to two's complement. Fixed.
    

    modified files:
     opcodes.scm sassy.scm


2006-05-05 22:35:44 GMT	Jonathan Kraut <jak76@columbia.edu>	patch-8

    Summary:
      Just a log update for stuff not in the patch-7 log
    Revision:
      sassy--mainline--0.2.1--patch-8

    For address calculations like (& reg disp), where disp is an 8-bit value, limited the disp to a signed byte, rather than an unsigned byte, because the processor sign extends the 8-bit disp. Thanks to Felix Klock for catching this.
    
    
    

    modified files:
     {arch}/sassy/sassy--mainline/sassy--mainline--0.2.1/jak76@columbia.edu--scheme/patch-log/patch-7


2006-05-05 22:17:28 GMT	Jonathan Kraut <jak76@columbia.edu>	patch-7

    Summary:
      Fixed nasty address calculation bug, expanded support for sassy-units
    Revision:
      sassy--mainline--0.2.1--patch-7

    For address calculations like (& reg disp), where disp is an 8-bit value, limited the disp to a signed byte, rather than an unsigned byte, because the processor sign extends the 8-bit disp. Thanks to Felix Klock for catching this.
    
    Finished support for more of srfi-69 api of make-hash-table for the other ports (besides chicken/scheme48, which were already working), so that sassy-units works.
    
    Fixed another stray-parens in macro.scm (sigh)
    
    Updated mzscheme support to 301 (mo' better srfis)

    new files:
     inits/.arch-ids/mzscheme-301.scm.id inits/mzscheme-301.scm

    removed files:
     inits/.arch-ids/mzscheme-299.400.scm.id
     inits/mzscheme-299.400.scm

    modified files:
     inits/gosh-0.8.5.scm inits/guile-1.7.91.scm inits/scm-5e1.scm
     macros.scm numbers.scm opcodes.scm sassy.scm tests/mem-ref
     tests/mem-ref.asm tests/mem-ref.scm tests/mem-ref16
     tests/mem-ref16.asm


2006-04-21 03:49:57 GMT	Jonathan Kraut <jak76@columbia.edu>	patch-6

    Summary:
      minor bug fixes in macros.scm
    Revision:
      sassy--mainline--0.2.1--patch-6

    Fixed a misplaced parens call-macro, and deleted a cons.
    

    modified files:
     TODO inits/scheme48-1.3.scm macros.scm sassy-48.scm text.scm


2006-04-19 23:14:39 GMT	Jonathan Kraut <jak76@columbia.edu>	patch-5

    Summary:
      sassy units, lazy macros, better include
    Revision:
      sassy--mainline--0.2.1--patch-5

    1) Incorporated Alex's control structure macros
    even? odd? positive? negative? when unless if3 cond
    (holding off on "case" for now)
    
    
    2) Incorporated Alex's "units" based on SASSY_INCLUDE_PATH and the
    accompanying load link link-expand dynamic-link auto-link macros.
    In this patch only chicken and scheme48 are supported.
    
    
    3) Added two new forms
    (lazy-macro name (lambda (x) ...))
    
    Creates a macro that doesn't expand its args before applying the macro
    to the args. If the result of the application is not a pair, the
    result is expanded again. Otherwise if the car is:
    
      - bound to a macro, it is applied to the tail of the result (lazily
    or not, as dictated by the returned binding
    
      - any of "macro" "let-macro" "lazy-macro" "let-lazy-macro", then new
    macros are created (and possibly bodies expanded)
    
      - otherwise the result is returned
    
    let-lazy-macro is the lazy version of let-macro
    
    
    4) The macro expander now understands "include" as a special keyword,
    and will dive into the sources and returned the expansions of such
    accordingly.
    

    new files:
     .arch-ids/units.scm.id units.scm

    modified files:
     TODO extras.scm inits/scheme48-1.3.scm macros.scm parse.scm
     sassy-48.scm sassy-chicken.scm sassy.el sassy.scm


2006-04-01 01:52:00 GMT	Jonathan Kraut <jak76@columbia.edu>	patch-4

    Summary:
      let-macro
    Revision:
      sassy--mainline--0.2.1--patch-4

    (let-macro ((name macro-def) ...)
      body ...)
    
    During macro-expansion, an instance of let-macro binds the macro-defs
    to name, and returns the result of expanding the body ... in this
    context. The names are only valid for the extend of the let-macro
    form.
    
    
    

    modified files:
     macros.scm parse.scm


2006-03-22 18:27:00 GMT	Jonathan Kraut <jak76@columbia.edu>	patch-3

    Summary:
      section switching and basic reflection, fixed a relocation bug.
    Revision:
      sassy--mainline--0.2.1--patch-3

    Keywords:
    
    ** Explicitly allow redundant (text (text ...)) etc for heap data and
       text directives, to make macros more flexible.
    
    ** Explicitly allow one time switches to a text, data, or heap
       section from within a text data or heap directive. Once the
       one-time switch is entered, it is an error to attempt to
       switch again from within it.
    
    ** Defined a global variable named "sassy-current" in the scheme
       environment, that holds the current #<sassy-output> of the session
       being assembled. The completel output API may be used to query it
       during compilation, with the following caveats:
    
       1) During compilation, the contents of the field sassy-symbol-table
          is sometimes a hash-table, and sometimes a list. It is only when
          compilation is complete that it is just a hash-table. Therefore,
          it is highly recommended that a symbol's record be obtained with
          the new public procedure:
    
          sassy-symbol-current name => a #<sassy-symbol> record, or #f if
                                       no symbol of that name exists in
                                       the environment.
    
          which does the right thing as far as finding a symbol.
    
       2) The size of the contents of a label definition is not available
          from within its definining (label ...) form.
    
       3) For any label definition in a text section _not_ at the top
          level of the text section (i.e. any label definition that occurs
          within _any_ COMFY-based control keyword, including an implied
          "begin"), its offset is not available until the parser returns
          to the top level of the text section.
    
    ** Added a new function to the ouput API
    
       sassy-reloc-target-section #<sassy-reloc> =>
             'text 'data 'heap or #f
    
       Which returns the section containing the _target_ of the reloc,
       so for instance sassy-make-elf can stop guessing
       (It was guessing poorly).
    
       This is really important for the anonymous relocs created by
       (locals ...)
    
    ** Fixed sassy-make-elf to take advantage of the above.
    

    modified files:
     TODO api.scm elf.scm intern.scm main.scm opcodes.scm parse.scm
     sassy-48.scm text.scm


2006-03-17 19:23:37 GMT	Jonathan Kraut <jak76@columbia.edu>	patch-2

    Summary:
      Fix non working error check in (data ...)
    Revision:
      sassy--mainline--0.2.1--patch-2


    modified files:
     intern.scm parse.scm


2006-03-17 19:13:53 GMT	Jonathan Kraut <jak76@columbia.edu>	patch-1

    Summary:
      Initial branch and import of ChangeLog-0.2
    Revision:
      sassy--mainline--0.2.1--patch-1


    new files:
     changes/.arch-ids/=id changes/.arch-ids/ChangeLog-0.2.id
     changes/.arch-ids/ChangeLog-old.id changes/ChangeLog-0.2
     changes/ChangeLog-old

    removed files:
     .arch-ids/CHANGES-old.id CHANGES-old

    new directories:
     changes changes/.arch-ids


2006-03-17 18:48:28 GMT	Jonathan Kraut <jak76@columbia.edu>	base-0

    Summary:
      tag of jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-35
    Revision:
      sassy--mainline--0.2.1--base-0

    (automatically generated log message)

    new patches:
     jak76@columbia.edu--scheme/sassy--mainline--0.2--base-0
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-1
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-2
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-3
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-4
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-5
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-6
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-7
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-8
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-9
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-10
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-11
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-12
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-13
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-14
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-15
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-16
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-17
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-18
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-19
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-20
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-21
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-22
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-23
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-24
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-25
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-26
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-27
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-28
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-29
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-30
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-31
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-32
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-33
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-34
     jak76@columbia.edu--scheme/sassy--mainline--0.2--patch-35


