mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-15 23:31:37 +00:00
Add initial support for machine code emission
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4865 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
928e23f9ba
commit
18a171f34c
@ -16,6 +16,15 @@
|
||||
#include "Support/CommandLine.h"
|
||||
#include "Support/Statistic.h"
|
||||
|
||||
|
||||
#include "llvm/CodeGen/MachineCodeEmitter.h"
|
||||
|
||||
struct JelloMachineCodeEmitter : public MachineCodeEmitter {
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
namespace {
|
||||
cl::opt<std::string>
|
||||
InputFile(cl::desc("<input bytecode>"), cl::Positional, cl::init("-"));
|
||||
@ -48,12 +57,24 @@ int main(int argc, char **argv) {
|
||||
}
|
||||
|
||||
PassManager Passes;
|
||||
|
||||
// Compile LLVM Code down to machine code in the intermediate representation
|
||||
if (Target.addPassesToJITCompile(Passes)) {
|
||||
std::cerr << argv[0] << ": target '" << Target.getName()
|
||||
<< "' doesn't support JIT compilation!\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Turn the machine code intermediate representation into bytes in memory that
|
||||
// may be executed.
|
||||
//
|
||||
JelloMachineCodeEmitter MCE;
|
||||
if (Target.addPassesToEmitMachineCode(Passes, MCE)) {
|
||||
std::cerr << argv[0] << ": target '" << Target.getName()
|
||||
<< "' doesn't support machine code emission!\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
// JIT all of the methods in the module. Eventually this will JIT functions
|
||||
// on demand.
|
||||
Passes.run(*M.get());
|
||||
|
Loading…
x
Reference in New Issue
Block a user