/* */
/* */
/* */
-/* (C) 2000-2004 Ullrich von Bassewitz */
-/* Römerstraße 52 */
-/* D-70794 Filderstadt */
-/* 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 */
+void RemoveCodeRange (const CodeMark* Start, const CodeMark* End)
+/* Remove all code between two code markers */
+{
+ /* Nothing to do if the range is empty */
+ if (Start->Pos == End->Pos) {
+ return;
+ }
+
+ /* Delete the range */
+ CS_DelCodeRange (CS->Code, Start->Pos, End->Pos-1);
+}
+
+
+
void RemoveCode (const CodeMark* M)
/* Remove all code after the given code marker */
{
int CodeRangeIsEmpty (const CodeMark* Start, const CodeMark* End)
/* Return true if the given code range is empty (no code between Start and End) */
-{
+{
int Empty;
- PRECONDITION (Start->Pos >= End->Pos);
+ PRECONDITION (Start->Pos <= End->Pos);
Empty = (Start->Pos == End->Pos);
if (Empty) {
/* Safety */
-void WriteOutput (FILE* F)
-/* Write the final output to a file */
+void WriteAsmOutput (void)
+/* Write the final assembler output to the output file */
{
SymTable* SymTab;
SymEntry* Entry;
/* Output the global data segment */
CHECK (!HaveGlobalCode ());
- OutputSegments (CS, F);
+ OutputSegments (CS);
/* Output all global or referenced functions */
SymTab = GetGlobalSymTab ();
/* Function which is defined and referenced or extern */
CS_MergeLabels (Entry->V.F.Seg->Code);
RunOpt (Entry->V.F.Seg->Code);
- OutputSegments (Entry->V.F.Seg, F);
+ OutputSegments (Entry->V.F.Seg);
}
Entry = Entry->NextSym;
}