[2] | 1 | #include "MOperand.h"
|
---|
| 2 |
|
---|
| 3 | using namespace std;
|
---|
| 4 |
|
---|
| 5 | MOperand::MOperand(MOperandType mtype, int value) {
|
---|
| 6 | MOperand::SetOperandType(mtype);
|
---|
| 7 | MOperand::SetIntValue(value);
|
---|
| 8 | MOperand::SetOffset(NO_OFFSET);
|
---|
| 9 | }
|
---|
| 10 |
|
---|
| 11 | MOperand::MOperand(MOperandType mtype, float value) {
|
---|
| 12 | MOperand::SetOperandType(mtype);
|
---|
| 13 | MOperand::SetRealValue(value);
|
---|
| 14 | MOperand::SetOffset(NO_OFFSET);
|
---|
| 15 | }
|
---|
| 16 |
|
---|
| 17 | MOperand::MOperand(MOperandType mtype, MRegisterType value) {
|
---|
| 18 | MOperand::SetOperandType(mtype);
|
---|
| 19 | MOperand::SetRegisterType(value);
|
---|
| 20 | MOperand::SetOffset(NO_OFFSET);
|
---|
| 21 | }
|
---|
| 22 |
|
---|
| 23 | MOperand::MOperand(MOperandType mtype, string newLabel) {
|
---|
| 24 | MOperand::SetOperandType(mtype);
|
---|
| 25 | MOperand::SetOffset(NO_OFFSET);
|
---|
| 26 | label = newLabel;
|
---|
| 27 | }
|
---|
| 28 |
|
---|
| 29 | MOperand::MOperand(MOperandType mtype, MRegisterType reg, int offset) {
|
---|
| 30 | MOperand::SetOperandType(mtype);
|
---|
| 31 | MOperand::SetRegisterType(reg);
|
---|
| 32 | MOperand::SetOffset(offset);
|
---|
| 33 | }
|
---|
| 34 |
|
---|
| 35 | // Set operand type handling
|
---|
| 36 | void MOperand::SetOperandType(MOperandType type) {
|
---|
| 37 | mType = type;
|
---|
| 38 | }
|
---|
| 39 |
|
---|
| 40 | MOperandType MOperand::GetOperandType() const {
|
---|
| 41 | return (mType);
|
---|
| 42 | }
|
---|
| 43 |
|
---|
| 44 |
|
---|
| 45 | // constant value based
|
---|
| 46 |
|
---|
| 47 | int MOperand::GetIntValue() const {
|
---|
| 48 | return (iValue);
|
---|
| 49 | }
|
---|
| 50 |
|
---|
| 51 | void MOperand::SetIntValue(int value) {
|
---|
| 52 | iValue = value;
|
---|
| 53 | }
|
---|
| 54 |
|
---|
| 55 | float MOperand::GetRealValue() const {
|
---|
| 56 | return (rValue);
|
---|
| 57 | }
|
---|
| 58 |
|
---|
| 59 | void MOperand::SetRealValue(float value) {
|
---|
| 60 | rValue = value;
|
---|
| 61 | }
|
---|
| 62 |
|
---|
| 63 | // register entries
|
---|
| 64 |
|
---|
| 65 | void MOperand::SetRegisterNumber(int value) {
|
---|
| 66 | registerNumber = value;
|
---|
| 67 | }
|
---|
| 68 |
|
---|
| 69 | int MOperand::GetRegisterNumber() const {
|
---|
| 70 | return registerNumber;
|
---|
| 71 | }
|
---|
| 72 |
|
---|
| 73 | void MOperand::SetRegisterType(MRegisterType value) {
|
---|
| 74 | registerNumber = (int) value;
|
---|
| 75 | }
|
---|
| 76 |
|
---|
| 77 | MRegisterType MOperand::GetRegisterType() const {
|
---|
| 78 | return ((MRegisterType) registerNumber);
|
---|
| 79 | }
|
---|
| 80 |
|
---|
| 81 | void MOperand::SetOffset(int value) {
|
---|
| 82 | offset = value;
|
---|
| 83 |
|
---|
| 84 | }
|
---|
| 85 |
|
---|
| 86 | int MOperand::GetOffset() const {
|
---|
| 87 | return (offset);
|
---|
| 88 | }
|
---|
| 89 |
|
---|
| 90 | void MOperand::SetAddress(int reg) {
|
---|
| 91 | address = reg;
|
---|
| 92 | }
|
---|
| 93 |
|
---|
| 94 | void MOperand::SetAddress(MRegisterType reg) {
|
---|
| 95 | address = (int) reg;
|
---|
| 96 | }
|
---|
| 97 |
|
---|
| 98 | int MOperand::GetAddress() const {
|
---|
| 99 | return (address);
|
---|
| 100 | }
|
---|
| 101 |
|
---|
| 102 | void MOperand::SetLabel(string newLabel) {
|
---|
| 103 | label = newLabel;
|
---|
| 104 | }
|
---|
| 105 |
|
---|
| 106 | string MOperand::GetLabel() const {
|
---|
| 107 | return (label);
|
---|
| 108 | }
|
---|
| 109 |
|
---|
| 110 | // Dump
|
---|
| 111 |
|
---|
| 112 | void MOperand::Dump(FILE *file) {
|
---|
| 113 |
|
---|
| 114 | }
|
---|