54 lines
1.5 KiB
C++
54 lines
1.5 KiB
C++
//
|
|
// WDC65816TargetAsmStreamer.h
|
|
// llvm
|
|
//
|
|
// Created by Jeremy Rand on 2016-04-11.
|
|
// Copyright © 2016 Jeremy Rand. All rights reserved.
|
|
//
|
|
|
|
#ifndef WDC65816TargetStreamer_h
|
|
#define WDC65816TargetStreamer_h
|
|
|
|
|
|
#include "llvm/MC/MCStreamer.h"
|
|
|
|
|
|
namespace llvm {
|
|
|
|
|
|
class WDC65816TargetStreamer : public MCTargetStreamer {
|
|
virtual void anchor();
|
|
|
|
public:
|
|
virtual void EmitCaseDirective(void) = 0;
|
|
virtual void EmitKeepDirective(StringRef filename) = 0;
|
|
virtual void EmitSegStartDirective(StringRef filename) = 0;
|
|
virtual void EmitSegEndDirective(void) = 0;
|
|
|
|
virtual void EmitFunctionEntryLabel(StringRef function) = 0;
|
|
virtual void EmitInstruction(StringRef instruction) = 0;
|
|
};
|
|
|
|
class WDC65816TargetAsmStreamer : public WDC65816TargetStreamer {
|
|
formatted_raw_ostream &OS;
|
|
StringRef indent;
|
|
int indentlen;
|
|
|
|
StringRef &trimFilename(StringRef &filename);
|
|
|
|
public:
|
|
WDC65816TargetAsmStreamer(formatted_raw_ostream &OS) : OS(OS), indent(" "), indentlen(11) {}
|
|
virtual ~WDC65816TargetAsmStreamer();
|
|
|
|
virtual void EmitCaseDirective(void);
|
|
virtual void EmitKeepDirective(StringRef filename);
|
|
virtual void EmitSegStartDirective(StringRef filename);
|
|
virtual void EmitSegEndDirective(void);
|
|
|
|
virtual void EmitFunctionEntryLabel(StringRef function);
|
|
virtual void EmitInstruction(StringRef instruction);
|
|
};
|
|
}
|
|
|
|
#endif /* WDC65816TargetStreamer_h */
|