/*****************************************************************************/
/* */
-/* asmcode.h */
+/* asmcode.h */
/* */
-/* Assembler output code handling for the cc65 C compiler */
+/* Assembler output code handling for the cc65 C compiler */
/* */
/* */
/* */
-/* (C) 2000 Ullrich von Bassewitz */
-/* Wacholderweg 14 */
-/* D-70597 Stuttgart */
-/* EMail: uz@musoftware.de */
+/* (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 */
/*****************************************************************************/
-/* Data */
+/* Data */
/*****************************************************************************/
/* Marker for an assembler code position */
-typedef struct Line* CodeMark;
+typedef struct {
+ unsigned Pos; /* Code position */
+ int SP; /* Stack pointer at this position */
+} CodeMark;
/*****************************************************************************/
-/* Code */
+/* Code */
/*****************************************************************************/
-void AddCodeLine (const char* Format, ...) attribute ((format(printf,1,2)));
-/* Add a new line of code to the output */
-
-void AddCodeHint (const char* Hint);
-/* Add an optimizer hint */
-
-void AddEmptyLine (void);
-/* Add an empty line for formatting purposes */
-
-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) */
-
-/* End of asmcode.h */
-#endif
+void WriteAsmOutput (void);
+/* Write the final assembler output to the output file */
+/* End of asmcode.h */
+#endif