mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-24 13:18:17 +00:00
Remove support for interactive (step finish next) instructions.
Remove printCurrentInstruction, printStackFrame and infoValue (only used interactively) and other unused methods of Interpreter. Fold UserInput.cpp containing only callMainFunction() into Interpreter.cpp. Remove unused Profile flag. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8359 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -8,6 +8,8 @@
|
||||
|
||||
#include "Interpreter.h"
|
||||
#include "llvm/Module.h"
|
||||
#include "llvm/DerivedTypes.h"
|
||||
#include "llvm/Function.h"
|
||||
|
||||
/// create - Create a new interpreter object. This can never fail.
|
||||
///
|
||||
@@ -76,3 +78,45 @@ int Interpreter::run(const std::string &MainFunction,
|
||||
return ExitCode;
|
||||
}
|
||||
|
||||
|
||||
// callMainFunction - Construct call to typical C main() function and
|
||||
// call it using callFunction().
|
||||
//
|
||||
bool Interpreter::callMainFunction(const std::string &Name,
|
||||
const std::vector<std::string> &InputArgv) {
|
||||
Function *M = getModule().getNamedFunction(Name);
|
||||
if (M == 0) {
|
||||
std::cerr << "Could not find function '" << Name << "' in module!\n";
|
||||
return 1;
|
||||
}
|
||||
const FunctionType *MT = M->getFunctionType();
|
||||
|
||||
std::vector<GenericValue> Args;
|
||||
if (MT->getParamTypes().size() >= 2) {
|
||||
PointerType *SPP = PointerType::get(PointerType::get(Type::SByteTy));
|
||||
if (MT->getParamTypes()[1] != SPP) {
|
||||
CW << "Second argument of '" << Name << "' should have type: '"
|
||||
<< SPP << "'!\n";
|
||||
return true;
|
||||
}
|
||||
Args.push_back(PTOGV(CreateArgv(InputArgv)));
|
||||
}
|
||||
|
||||
if (MT->getParamTypes().size() >= 1) {
|
||||
if (!MT->getParamTypes()[0]->isInteger()) {
|
||||
std::cout << "First argument of '" << Name
|
||||
<< "' should be an integer!\n";
|
||||
return true;
|
||||
} else {
|
||||
GenericValue GV; GV.UIntVal = InputArgv.size();
|
||||
Args.insert(Args.begin(), GV);
|
||||
}
|
||||
}
|
||||
|
||||
callFunction(M, Args); // Start executing it...
|
||||
|
||||
// Reset the current frame location to the top of stack
|
||||
CurFrame = ECStack.size()-1;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user