1a3dcfb130044f306632a5fab43854eda4095a09cChris Lattner//===- Disassembler.h - Text File Disassembler ----------------------------===//
2ba847da571354e13f1caa3699ee06b2d57df9fe9Sean Callanan//
3ba847da571354e13f1caa3699ee06b2d57df9fe9Sean Callanan//                     The LLVM Compiler Infrastructure
4ba847da571354e13f1caa3699ee06b2d57df9fe9Sean Callanan//
5ba847da571354e13f1caa3699ee06b2d57df9fe9Sean Callanan// This file is distributed under the University of Illinois Open Source
6ba847da571354e13f1caa3699ee06b2d57df9fe9Sean Callanan// License. See LICENSE.TXT for details.
7ba847da571354e13f1caa3699ee06b2d57df9fe9Sean Callanan//
8ba847da571354e13f1caa3699ee06b2d57df9fe9Sean Callanan//===----------------------------------------------------------------------===//
9ba847da571354e13f1caa3699ee06b2d57df9fe9Sean Callanan//
10ba847da571354e13f1caa3699ee06b2d57df9fe9Sean Callanan// This class implements the disassembler of strings of bytes written in
11ba847da571354e13f1caa3699ee06b2d57df9fe9Sean Callanan// hexadecimal, from standard input or from a file.
12ba847da571354e13f1caa3699ee06b2d57df9fe9Sean Callanan//
13ba847da571354e13f1caa3699ee06b2d57df9fe9Sean Callanan//===----------------------------------------------------------------------===//
14ba847da571354e13f1caa3699ee06b2d57df9fe9Sean Callanan
15a3dcfb130044f306632a5fab43854eda4095a09cChris Lattner#ifndef DISASSEMBLER_H
16a3dcfb130044f306632a5fab43854eda4095a09cChris Lattner#define DISASSEMBLER_H
17ba847da571354e13f1caa3699ee06b2d57df9fe9Sean Callanan
18ba847da571354e13f1caa3699ee06b2d57df9fe9Sean Callanan#include <string>
19ba847da571354e13f1caa3699ee06b2d57df9fe9Sean Callanan
20ba847da571354e13f1caa3699ee06b2d57df9fe9Sean Callanannamespace llvm {
21ba847da571354e13f1caa3699ee06b2d57df9fe9Sean Callanan
22ba847da571354e13f1caa3699ee06b2d57df9fe9Sean Callananclass MemoryBuffer;
23a5c177e70a42f48e4885075c4c48aad0816a2817Bill Wendlingclass Target;
24d5826a33a5a7c298a8934541d11cda042028be3bDan Gohmanclass raw_ostream;
25d0c478d95f440b4db76279fe47d6cf734a28fa9aRichard Bartonclass SourceMgr;
26d0c478d95f440b4db76279fe47d6cf734a28fa9aRichard Bartonclass MCSubtargetInfo;
27d0c478d95f440b4db76279fe47d6cf734a28fa9aRichard Bartonclass MCStreamer;
28ba847da571354e13f1caa3699ee06b2d57df9fe9Sean Callanan
29a3dcfb130044f306632a5fab43854eda4095a09cChris Lattnerclass Disassembler {
30ba847da571354e13f1caa3699ee06b2d57df9fe9Sean Callananpublic:
31d0c478d95f440b4db76279fe47d6cf734a28fa9aRichard Barton  static int disassemble(const Target &T,
32d0c478d95f440b4db76279fe47d6cf734a28fa9aRichard Barton                         const std::string &Triple,
33d0c478d95f440b4db76279fe47d6cf734a28fa9aRichard Barton                         MCSubtargetInfo &STI,
34d0c478d95f440b4db76279fe47d6cf734a28fa9aRichard Barton                         MCStreamer &Streamer,
35d0c478d95f440b4db76279fe47d6cf734a28fa9aRichard Barton                         MemoryBuffer &Buffer,
36d0c478d95f440b4db76279fe47d6cf734a28fa9aRichard Barton                         SourceMgr &SM,
37d5826a33a5a7c298a8934541d11cda042028be3bDan Gohman                         raw_ostream &Out);
38f5bf3cf7e2a0ff1ca884a83a8b56b5a57f8a5c80Jim Grosbach
39668b15467be158a5f0e0c4a5e1ec232da021892cSean Callanan  static int disassembleEnhanced(const std::string &tripleString,
40d5826a33a5a7c298a8934541d11cda042028be3bDan Gohman                                 MemoryBuffer &buffer,
41d0c478d95f440b4db76279fe47d6cf734a28fa9aRichard Barton                                 SourceMgr &SM,
42d5826a33a5a7c298a8934541d11cda042028be3bDan Gohman                                 raw_ostream &Out);
43ba847da571354e13f1caa3699ee06b2d57df9fe9Sean Callanan};
44f5bf3cf7e2a0ff1ca884a83a8b56b5a57f8a5c80Jim Grosbach
45ba847da571354e13f1caa3699ee06b2d57df9fe9Sean Callanan} // namespace llvm
46ba847da571354e13f1caa3699ee06b2d57df9fe9Sean Callanan
47ba847da571354e13f1caa3699ee06b2d57df9fe9Sean Callanan#endif
48