aboutsummaryrefslogtreecommitdiff
path: root/qtmips_machine/qtmipsmachine.cpp
diff options
context:
space:
mode:
authorPavel Pisa <pisa@cmp.felk.cvut.cz>2019-02-13 11:50:28 +0100
committerPavel Pisa <pisa@cmp.felk.cvut.cz>2019-02-13 11:50:28 +0100
commit04ab3211f8a052e7f0a05b36206403197e526284 (patch)
tree53de0b401f289823a196649e14364987353abda4 /qtmips_machine/qtmipsmachine.cpp
parent86a70c781c7b9a62782b785cec14fb483bdaa761 (diff)
downloadqtmips-04ab3211f8a052e7f0a05b36206403197e526284.tar.gz
qtmips-04ab3211f8a052e7f0a05b36206403197e526284.tar.bz2
qtmips-04ab3211f8a052e7f0a05b36206403197e526284.zip
Add speed option to run core for time chunks without visualization.
Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
Diffstat (limited to 'qtmips_machine/qtmipsmachine.cpp')
-rw-r--r--qtmips_machine/qtmipsmachine.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/qtmips_machine/qtmipsmachine.cpp b/qtmips_machine/qtmipsmachine.cpp
index 69deeb1..81f733b 100644
--- a/qtmips_machine/qtmipsmachine.cpp
+++ b/qtmips_machine/qtmipsmachine.cpp
@@ -33,6 +33,7 @@
*
******************************************************************************/
+#include <QTime>
#include "qtmipsmachine.h"
#include "programloader.h"
@@ -102,8 +103,9 @@ const MachineConfig &QtMipsMachine::config() {
return mcnf;
}
-void QtMipsMachine::set_speed(unsigned val) {
- run_t->setInterval(val);
+void QtMipsMachine::set_speed(unsigned int ips, unsigned int time_chunk) {
+ this->time_chunk = time_chunk;
+ run_t->setInterval(ips);
}
const Registers *QtMipsMachine::registers() {
@@ -174,7 +176,11 @@ void QtMipsMachine::step_internal(bool skip_break) {
set_status(ST_BUSY);
emit tick();
try {
- cr->step(skip_break);
+ QTime start_time = QTime::currentTime();
+ do {
+ cr->step(skip_break);
+ } while(time_chunk != 0 && stat == ST_BUSY &&
+ start_time.msecsTo(QTime::currentTime()) < time_chunk);
} catch (QtMipsException &e) {
run_t->stop();
set_status(ST_TRAPPED);