From f0ad502e4651243d6a96194b3393bd460c0f7fc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Ko=C4=8D=C3=AD?= Date: Sun, 19 Nov 2017 21:23:04 +0100 Subject: 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. --- qtmips_cli/main.cpp | 48 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 43 insertions(+), 5 deletions(-) (limited to 'qtmips_cli/main.cpp') 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 +#include #include -#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(); } -- cgit v1.2.3