author | František Kučera <franta-hg@frantovo.cz> |
Sat, 23 Dec 2017 23:50:44 +0100 | |
changeset 25 | 5ce09de7f9b7 |
parent 20 | c++/rgb-assembler/commands/Goto.h@b9ceffdcaf14 |
child 29 | 10d6964e7b4a |
permissions | -rw-r--r-- |
franta-hg@20 | 1 |
#pragma once |
franta-hg@20 | 2 |
|
franta-hg@20 | 3 |
#include <wchar.h> |
franta-hg@20 | 4 |
|
franta-hg@20 | 5 |
#include "../Command.h" |
franta-hg@20 | 6 |
|
franta-hg@20 | 7 |
namespace commands { |
franta-hg@20 | 8 |
|
franta-hg@25 | 9 |
class GotoCompare : public Command { |
franta-hg@20 | 10 |
public: |
franta-hg@20 | 11 |
|
franta-hg@20 | 12 |
void process(octet_t* memory, address_t& index) override { |
franta-hg@25 | 13 |
address_t aa = read<address_t>(memory, index); |
franta-hg@25 | 14 |
address_t ab = read<address_t>(memory, index); |
franta-hg@25 | 15 |
address_t eq = read<address_t>(memory, index); |
franta-hg@25 | 16 |
address_t gt = read<address_t>(memory, index); |
franta-hg@25 | 17 |
address_t lt = read<address_t>(memory, index); |
franta-hg@25 | 18 |
|
franta-hg@25 | 19 |
octet_t a = read<octet_t>(memory, aa); |
franta-hg@25 | 20 |
octet_t b = read<octet_t>(memory, ab); |
franta-hg@25 | 21 |
|
franta-hg@25 | 22 |
if (a == b) index = eq; |
franta-hg@25 | 23 |
else if (a > b) index = gt; |
franta-hg@25 | 24 |
else index = lt; |
franta-hg@25 | 25 |
|
franta-hg@25 | 26 |
wprintf(L"GOTO COMPARE a = %02X, b = %02X, eq = %d, gt = %d, lt = %d → %d\n", a, b, eq, gt, lt, index); |
franta-hg@20 | 27 |
} |
franta-hg@20 | 28 |
private: |
franta-hg@20 | 29 |
|
franta-hg@20 | 30 |
}; |
franta-hg@20 | 31 |
|
franta-hg@20 | 32 |
} |