diff options
author | Pavel Pisa <pisa@cmp.felk.cvut.cz> | 2019-07-03 08:44:32 +0200 |
---|---|---|
committer | Pavel Pisa <pisa@cmp.felk.cvut.cz> | 2019-07-03 08:44:32 +0200 |
commit | b2d8910f3f60b50bf3fc359dfa37a4da2414cd2f (patch) | |
tree | f7771569179b78ead87386601024923f5ad22de2 /qtmips_gui/mainwindow.cpp | |
parent | 7e10c3ff8149a8d25431807fe15a73fe40cfdc5b (diff) | |
download | qtmips-b2d8910f3f60b50bf3fc359dfa37a4da2414cd2f.tar.gz qtmips-b2d8910f3f60b50bf3fc359dfa37a4da2414cd2f.tar.bz2 qtmips-b2d8910f3f60b50bf3fc359dfa37a4da2414cd2f.zip |
Allow spaces in middle of assembler arguments and report errors.
Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
Diffstat (limited to 'qtmips_gui/mainwindow.cpp')
-rw-r--r-- | qtmips_gui/mainwindow.cpp | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/qtmips_gui/mainwindow.cpp b/qtmips_gui/mainwindow.cpp index e3ad8dd..766a28c 100644 --- a/qtmips_gui/mainwindow.cpp +++ b/qtmips_gui/mainwindow.cpp @@ -620,6 +620,7 @@ void MainWindow::compile_source() { int ln = 1; for ( QTextBlock block = doc->begin(); block.isValid(); block = block.next(), ln++) { + QString error; int pos; QString label = ""; QString line = block.text(); @@ -641,7 +642,6 @@ void MainWindow::compile_source() { QString op = line.split(" ").at(0).toUpper(); if (op == ".ORG") { bool ok; - QString error; fixmatheval::FmeExpression expression; fixmatheval::FmeValue value; ok = expression.parse(line.mid(op.size()), error); @@ -659,7 +659,6 @@ void MainWindow::compile_source() { continue; } if (op == ".WORD") { - QString error; foreach (QString s, line.mid(op.size()).split(",")) { s = s.simplified(); std::uint32_t val = 0; @@ -677,14 +676,14 @@ void MainWindow::compile_source() { } std::uint32_t inst[2] = {0, 0}; - ssize_t size = machine::Instruction::code_from_string(inst, 8, line, + ssize_t size = machine::Instruction::code_from_string(inst, 8, line, error, address, &reloc, ln, true); if (size < 0) { error_line = ln; editor->setCursorToLine(error_line); QMessageBox::critical(this, "QtMips Error", - tr("line %1 instruction %2 parse error.") - .arg(QString::number(ln), line)); + tr("line %1 instruction %2 parse error - %3.") + .arg(QString::number(ln), line, error)); break; } std::uint32_t *p = inst; |