aboutsummaryrefslogtreecommitdiff
path: root/qtmips_cli/main.cpp
diff options
context:
space:
mode:
authorKarel Kočí <cynerd@email.cz>2017-11-19 21:23:04 +0100
committerKarel Kočí <cynerd@email.cz>2017-11-19 21:23:04 +0100
commitf0ad502e4651243d6a96194b3393bd460c0f7fc9 (patch)
tree4f912c24b5943bd93b5a3378df75f9611de6779b /qtmips_cli/main.cpp
parent2c6562fa78e884d66b8c2a306f020101e8803f2e (diff)
downloadqtmips-f0ad502e4651243d6a96194b3393bd460c0f7fc9.tar.gz
qtmips-f0ad502e4651243d6a96194b3393bd460c0f7fc9.tar.bz2
qtmips-f0ad502e4651243d6a96194b3393bd460c0f7fc9.zip
Another huge pile of work for about two months
Well I should commit every change instead of this madness. I am not documenting changes as all this is just improvements and implementation progression.
Diffstat (limited to 'qtmips_cli/main.cpp')
-rw-r--r--qtmips_cli/main.cpp48
1 files changed, 43 insertions, 5 deletions
diff --git a/qtmips_cli/main.cpp b/qtmips_cli/main.cpp
index 780f782..6240414 100644
--- a/qtmips_cli/main.cpp
+++ b/qtmips_cli/main.cpp
@@ -1,12 +1,50 @@
#include <QCoreApplication>
+#include <QCommandLineParser>
#include <iostream>
-#include "machineapp.h"
+#include "tracer.h"
-#include "instructions/arithmetic.h"
+void create_parser(QCommandLineParser &p) {
+ p.setApplicationDescription("QtMips CLI machine simulator");
+ p.addHelpOption();
+ p.addVersionOption();
-int main(int argc, char *argv[])
-{
- MachineApp app(argc, argv);
+ p.addPositionalArgument("FILE", "Input ELF executable file");
+}
+
+void configure_machine(QCommandLineParser &p, MachineConfig &cc) {
+ QStringList pa = p.positionalArguments();
+ if (pa.size() != 1) {
+ std::cerr << "Single ELF file has to be specified" << std::endl;
+ exit(1);
+ }
+ cc.set_elf(pa[0]);
+
+ // TODO
+}
+
+void configure_tracer(QCommandLineParser &p, Tracer &tr) {
+ // TODO
+ tr.reg_pc();
+}
+
+int main(int argc, char *argv[]) {
+ QCoreApplication app(argc, argv);
+ app.setApplicationName("qtmips_cli");
+ app.setApplicationVersion("0.1");
+
+ QCommandLineParser p;
+ create_parser(p);
+ p.process(app);
+
+ MachineConfig cc;
+ configure_machine(p, cc);
+ QtMipsMachine machine(cc);
+
+ app.connect(&machine, SIGNAL(program_exit()), &app, SLOT(quit()));
+
+ Tracer tr(&machine);
+ configure_tracer(p, tr);
+ machine.play(); // Run machine
return app.exec();
}