X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fcc65%2Fasmcode.h;h=b91b892d0afa0e01615adf614f669797e6bbab19;hb=9b7c16ec4cbb5282642c377272224e3fc825f860;hp=47ea6558628449c69fa2ccbede015f296c2b6d9a;hpb=c1b6680a92b6e9d3d3e87d8dcd6ae6f11ead8cf5;p=cc65 diff --git a/src/cc65/asmcode.h b/src/cc65/asmcode.h index 47ea65586..b91b892d0 100644 --- a/src/cc65/asmcode.h +++ b/src/cc65/asmcode.h @@ -6,10 +6,10 @@ /* */ /* */ /* */ -/* (C) 2000-2001 Ullrich von Bassewitz */ -/* Wacholderweg 14 */ -/* D-70597 Stuttgart */ -/* EMail: uz@cc65.org */ +/* (C) 2000-2009, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ @@ -52,7 +52,10 @@ /* Marker for an assembler code position */ -typedef unsigned CodeMark; +typedef struct { + unsigned Pos; /* Code position */ + int SP; /* Stack pointer at this position */ +} CodeMark; @@ -62,14 +65,25 @@ typedef unsigned CodeMark; -CodeMark GetCodePos (void); +void GetCodePos (CodeMark* M); /* Get a marker pointing to the current output position */ -void RemoveCode (CodeMark M); +void RemoveCodeRange (const CodeMark* Start, const CodeMark* End); +/* Remove all code between two code markers */ + +void RemoveCode (const CodeMark* M); /* Remove all code after the given code marker */ -void WriteOutput (FILE* F); -/* Write the final output to a file */ +void MoveCode (const CodeMark* Start, const CodeMark* End, const CodeMark* Target); +/* Move the code between Start (inclusive) and End (exclusive) to + * (before) Target. The code marks aren't updated. + */ + +int CodeRangeIsEmpty (const CodeMark* Start, const CodeMark* End); +/* Return true if the given code range is empty (no code between Start and End) */ + +void WriteAsmOutput (void); +/* Write the final assembler output to the output file */