mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207083 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			88 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| //===-- llvm/MC/MCParsedAsmOperand.h - Asm Parser Operand -------*- C++ -*-===//
 | |
| //
 | |
| //                     The LLVM Compiler Infrastructure
 | |
| //
 | |
| // This file is distributed under the University of Illinois Open Source
 | |
| // License. See LICENSE.TXT for details.
 | |
| //
 | |
| //===----------------------------------------------------------------------===//
 | |
| 
 | |
| #ifndef LLVM_MC_MCPARSER_MCPARSEDASMOPERAND_H
 | |
| #define LLVM_MC_MCPARSER_MCPARSEDASMOPERAND_H
 | |
| 
 | |
| namespace llvm {
 | |
| class SMLoc;
 | |
| class raw_ostream;
 | |
| 
 | |
| /// MCParsedAsmOperand - This abstract class represents a source-level assembly
 | |
| /// instruction operand.  It should be subclassed by target-specific code.  This
 | |
| /// base class is used by target-independent clients and is the interface
 | |
| /// between parsing an asm instruction and recognizing it.
 | |
| class MCParsedAsmOperand {
 | |
|   /// MCOperandNum - The corresponding MCInst operand number.  Only valid when
 | |
|   /// parsing MS-style inline assembly.
 | |
|   unsigned MCOperandNum;
 | |
| 
 | |
|   /// Constraint - The constraint on this operand.  Only valid when parsing
 | |
|   /// MS-style inline assembly.
 | |
|   std::string Constraint;
 | |
| 
 | |
| public:
 | |
|   MCParsedAsmOperand() {}
 | |
|   virtual ~MCParsedAsmOperand() {}
 | |
| 
 | |
|   void setConstraint(StringRef C) { Constraint = C.str(); }
 | |
|   StringRef getConstraint() { return Constraint; }
 | |
| 
 | |
|   void setMCOperandNum (unsigned OpNum) { MCOperandNum = OpNum; }
 | |
|   unsigned getMCOperandNum() { return MCOperandNum; }
 | |
| 
 | |
|   virtual StringRef getSymName() { return StringRef(); }
 | |
|   virtual void *getOpDecl() { return nullptr; }
 | |
| 
 | |
|   /// isToken - Is this a token operand?
 | |
|   virtual bool isToken() const = 0;
 | |
|   /// isImm - Is this an immediate operand?
 | |
|   virtual bool isImm() const = 0;
 | |
|   /// isReg - Is this a register operand?
 | |
|   virtual bool isReg() const = 0;
 | |
|   virtual unsigned getReg() const = 0;
 | |
| 
 | |
|   /// isMem - Is this a memory operand?
 | |
|   virtual bool isMem() const = 0;
 | |
| 
 | |
|   /// getStartLoc - Get the location of the first token of this operand.
 | |
|   virtual SMLoc getStartLoc() const = 0;
 | |
|   /// getEndLoc - Get the location of the last token of this operand.
 | |
|   virtual SMLoc getEndLoc() const = 0;
 | |
| 
 | |
|   /// needAddressOf - Do we need to emit code to get the address of the
 | |
|   /// variable/label?   Only valid when parsing MS-style inline assembly.
 | |
|   virtual bool needAddressOf() const { return false; }
 | |
| 
 | |
|   /// isOffsetOf - Do we need to emit code to get the offset of the variable,
 | |
|   /// rather then the value of the variable?   Only valid when parsing MS-style
 | |
|   /// inline assembly.
 | |
|   virtual bool isOffsetOf() const { return false; }
 | |
| 
 | |
|   /// getOffsetOfLoc - Get the location of the offset operator.
 | |
|   virtual SMLoc getOffsetOfLoc() const { return SMLoc(); }
 | |
| 
 | |
|   /// print - Print a debug representation of the operand to the given stream.
 | |
|   virtual void print(raw_ostream &OS) const = 0;
 | |
|   /// dump - Print to the debug stream.
 | |
|   virtual void dump() const;
 | |
| };
 | |
| 
 | |
| //===----------------------------------------------------------------------===//
 | |
| // Debugging Support
 | |
| 
 | |
| inline raw_ostream& operator<<(raw_ostream &OS, const MCParsedAsmOperand &MO) {
 | |
|   MO.print(OS);
 | |
|   return OS;
 | |
| }
 | |
| 
 | |
| } // end namespace llvm.
 | |
| 
 | |
| #endif
 |