|
4 | 4 |
|
5 | 5 | - nothing to log |
6 | 6 |
|
| 7 | +# v.0.8.9 - 2021-06-22 |
| 8 | + |
| 9 | +- VMCU_OP rework |
| 10 | + - rename to VMCU_OPTYPE |
| 11 | + - added new types to enumeration. Enumeration after rework: |
| 12 | + - VMCU_OPTYPE_NONE = -1 (no operand, therefore no type) |
| 13 | + - VMCU_OPTYPE_R, (register operand) |
| 14 | + - VMCU_OPTYPE_RP, (registerpair operand) |
| 15 | + - VMCU_OPTYPE_X, (x pointer operand) |
| 16 | + - VMCU_OPTYPE_Y, (y pointer operand) |
| 17 | + - VMCU_OPTYPE_Z, (z pointer operand) |
| 18 | + - VMCU_OPTYPE_B, (bit number 0-7) |
| 19 | + - VMCU_OPTYPE_K4, (4-bit immediate) |
| 20 | + - VMCU_OPTYPE_K6, (6-bit immediate) |
| 21 | + - VMCU_OPTYPE_K8, (8-bit immediate) |
| 22 | + - VMCU_OPTYPE_IO5, (5-bit I/O address) |
| 23 | + - VMCU_OPTYPE_IO6, (6-bit I/O address) |
| 24 | + - VMCU_OPTYPE_D7, (7-bit data address) |
| 25 | + - VMCU_OPTYPE_D16, (16-bit data address) |
| 26 | + - VMCU_OPTYPE_P22, (22-bit program address) |
| 27 | + - VMCU_OPTYPE_S7, (7-bit signed displacement, program memory) |
| 28 | + - VMCU_OPTYPE_S12 (12-bit signed displacement, program memory) |
| 29 | + - similar types can be found at https://en.wikipedia.org/wiki/Atmel_AVR_instruction_set |
| 30 | + |
| 31 | +- Added: VMCU_REGISTER - an enumeration of AVR general purpose registers (r0-r31) |
| 32 | + |
| 33 | +- Added: vmcu_registerpair_t structure |
| 34 | + - this structure is able to represent a registerpair by holding |
| 35 | + - a VMCU_REGISTER low - low byte of pair |
| 36 | + - a VMCU_REGISTER high - high byte of pair |
| 37 | + |
| 38 | +- vmcu_operand_t rework |
| 39 | + - vmcu_operand_t now consists of a |
| 40 | + - VMCU_OPTYPE - an enumeration of different operand types |
| 41 | + - value union - a c-union holding different kinds of operand values |
| 42 | + |
| 43 | +- The value union of vmcu_operand_t contains |
| 44 | + - uint8_t k for type = K4, K6, K8 |
| 45 | + - uint8_t b for type = B |
| 46 | + - uint8_t io for type = IO5, IO6 |
| 47 | + - uint16_t d for type = D7, D16 |
| 48 | + - uint32_t p for type = P22 |
| 49 | + - int16_t s for type = S7, S12 |
| 50 | + |
| 51 | +- disassembled .dw directive (= illegal opcode) does not have its opcode as source operand anymore |
| 52 | + - instead, an illegal opcode (.dw xxxx) has following attributes |
| 53 | + - instr->src.type = VMCU_OPTYPE_NONE |
| 54 | + - instr->dest.type = VMCU_OPTYPE_NONE |
| 55 | + - therefore no operand values |
| 56 | + - in order to simplify printing these "instructions", I've decided to move the .dw value (xxxx) |
| 57 | + to instr->mnem.base. So the base mnemonic is now ".dw xxxx" with no operands. |
| 58 | + |
| 59 | +- endloop driver (driver/endloop/) improvement |
| 60 | + - endloop driver is now able to detect unconditional and conditional endless loops |
| 61 | + |
| 62 | +- adjusted driver code |
| 63 | +- minor improvements |
| 64 | + |
7 | 65 | # v.0.8.8 - 2021-06-20 |
8 | 66 |
|
9 | 67 | - Added: vmcu_mnemonic_t structure to vmcu_instr_t |
|
0 commit comments