MIXAL
machine_conversion.cpp
Go to the documentation of this file.
1 #include <iostream>
2 #include "machine.h"
3 
9 namespace mixal {
10 
15 void Computer::executeNUM() {
16  int64_t num = 0;
17  for (int i = 1; i <= 5; ++i) {
18  num = num * 10 + rA[i] % 10;
19  }
20  for (int i = 1; i <= 5; ++i) {
21  num = num * 10 + rX[i] % 10;
22  }
23  bool negative = rA.negative;
24  if (num >= (1 << 30)) {
25  overflow = true;
26  num %= (1 << 30);
27  }
28  rA.set(num);
29  rA.negative = negative;
30 }
31 
33 void Computer::executeCHAR() {
34  int32_t num = std::abs(rA.value());
35  for (int i = 5; i >= 1; --i) {
36  rX[i] = 30 + num % 10;
37  num /= 10;
38  }
39  for (int i = 5; i >= 1; --i) {
40  rA[i] = 30 + num % 10;
41  num /= 10;
42  }
43 }
44 
45 }; // namespace mixal
mixal::Computer::rX
Register5 rX
Definition: machine.h:32
machine.h
The virtual machine.
mixal::Computer::overflow
bool overflow
Definition: machine.h:35
mixal::ComputerWord::value
int32_t value() const
Definition: memory.cpp:132
mixal::ComputerWord::set
void set(int32_t value)
Definition: memory.cpp:178
mixal::Computer::rA
Register5 rA
Definition: machine.h:32