diff options
author | Karel Kočí <cynerd@email.cz> | 2017-11-19 21:23:04 +0100 |
---|---|---|
committer | Karel Kočí <cynerd@email.cz> | 2017-11-19 21:23:04 +0100 |
commit | f0ad502e4651243d6a96194b3393bd460c0f7fc9 (patch) | |
tree | 4f912c24b5943bd93b5a3378df75f9611de6779b /qtmips_cli/main.cpp | |
parent | 2c6562fa78e884d66b8c2a306f020101e8803f2e (diff) | |
download | qtmips-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.cpp | 48 |
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(); } |