Initial commit
This commit is contained in:
19
inc/addrs.h
19
inc/addrs.h
@@ -1,7 +1,22 @@
|
||||
#ifndef __ADDRS_H__
|
||||
#define __ADDRS_H__
|
||||
#include "mem_seg.h"
|
||||
|
||||
#define IOREG_SREG_ADDR 0x5F
|
||||
#define IOREG_SPH_ADDR 0x5E
|
||||
#define IOREG_SPL_ADDR 0x5D
|
||||
#define IOREG_EIND_ADDR 0x5C
|
||||
#define IOREG_RAMPZ_ADDR 0x5B
|
||||
|
||||
|
||||
#define GPREG_ZH_ADDR 31
|
||||
#define GPREG_ZL_ADDR 30
|
||||
|
||||
#define GPREG_YH_ADDR 29
|
||||
#define GPREG_YL_ADDR 28
|
||||
|
||||
#define GPREG_XH_ADDR 27
|
||||
#define GPREG_XL_ADDR 26
|
||||
|
||||
#define MEMDATA_IO_REGS 0
|
||||
#define MEMDATA_EXTSTATE 1
|
||||
|
||||
#endif // ifndef __ADDRS_H__
|
||||
@@ -49,7 +49,6 @@ size_t pubExtractPcounter(device_public_context_t* devContext);
|
||||
size_t pubExtractOpcode(device_mem_t* devMem, size_t _programCounter);
|
||||
void* pubExtractPcounterPtr(device_public_context_t* devContext);
|
||||
uint8_t pubExtractPcounterSizeWords();
|
||||
|
||||
device_specs_t* parseSpecsFromConfig(const conf_dev_t* devConf, char* errbuf);
|
||||
void fillSmartReadSpecs(device_specs_t* specs, smart_read_spec_t* smartReadSpecs, uint64_t smartReadSpecsCount);
|
||||
void fillSmartWriteSpecs(device_specs_t* specs, smart_write_spec_t* smartWriteSpecs, uint64_t smartWriteSpecsCount);
|
||||
|
||||
17
inc/generated.h
Normal file
17
inc/generated.h
Normal file
@@ -0,0 +1,17 @@
|
||||
#include "instr.h"
|
||||
#include "mem.h"
|
||||
#include <stdio.h>
|
||||
#include "addrs.h"
|
||||
|
||||
#if ARCH == AVRe
|
||||
#include "generated_AVRe.h"
|
||||
#endif
|
||||
#if ARCH == AVRxm
|
||||
#include "generated_AVRxm.h"
|
||||
#endif
|
||||
#if ARCH == AVRxt
|
||||
#include "generated_AVRxt.h"
|
||||
#endif
|
||||
#if ARCH == AVRrc
|
||||
#include "generated_AVRrc.h"
|
||||
#endif
|
||||
200
inc/generated_AVRe.h
Normal file
200
inc/generated_AVRe.h
Normal file
@@ -0,0 +1,200 @@
|
||||
#ifndef __GENERATED_INSTR_H__
|
||||
#define __GENERATED_INSTR_H__
|
||||
#include "instr.h"
|
||||
#include "mem.h"
|
||||
#include <stdio.h>
|
||||
#include "addrs.h"
|
||||
|
||||
uint8_t _adc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _add (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _adiw (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _and (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _andi (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _asr (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _bclr (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _bld (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _brbc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _brbs (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _break (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _bset (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _bst (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _call (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _cbi (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _com (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _cp (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _cpc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _cpi (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _cpse (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _dec (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _des (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _eicall (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _eijmp (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _elpm1 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _elpm2 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _elpm3 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _eor (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _fmul (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _fmuls (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _fmulsu (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _icall (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ijmp (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _in (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _inc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _jmp (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lac (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _las (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lat (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld1 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld2 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld3 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld_ldd2 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld_ldd3 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld_ldd4 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld_ldd_12 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld_ldd_13 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld_ldd_14 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ldi (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lds (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lds_avrrc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lpm1 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lpm2 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lpm3 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lsr (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _mov (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _movw (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _mul (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _muls (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _mulsu (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _neg (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _nop (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _or (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _out (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _pop (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _push (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _rcall (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ret (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _reti (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _rjmp (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ror (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbci (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbi (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbic (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbis (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbiw (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbr (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbrc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbrs (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sleep (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _spm (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st1 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st2 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st3 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st_std2 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st_std3 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st_std4 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st_std_12 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st_std_13 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st_std_14 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sts (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sts_avrrc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sub (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _subi (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _swap (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _wdr (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _xch (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
|
||||
|
||||
#define HANDLER_REGISTERS {\
|
||||
{&_adc, 0b0001110000000000, 0b0000001111111111, 2}, \
|
||||
{&_add, 0b0000110000000000, 0b0000001111111111, 2}, \
|
||||
{&_adiw, 0b1001011000000000, 0b0000000011111111, 2}, \
|
||||
{&_and, 0b0010000000000000, 0b0000001111111111, 2}, \
|
||||
{&_andi, 0b0111000000000000, 0b0000111111111111, 2}, \
|
||||
{&_asr, 0b1001010000000101, 0b0000000111110000, 2}, \
|
||||
{&_bclr, 0b1001010010001000, 0b0000000001110000, 2}, \
|
||||
{&_bld, 0b1111100000000000, 0b0000000111110111, 2}, \
|
||||
{&_brbc, 0b1111010000000000, 0b0000001111111111, 2}, \
|
||||
{&_brbs, 0b1111000000000000, 0b0000001111111111, 2}, \
|
||||
{&_break, 0b1001010110011000, 0b0000000000000000, 2}, \
|
||||
{&_bset, 0b1001010000001000, 0b0000000001110000, 2}, \
|
||||
{&_bst, 0b1111101000000000, 0b0000000111110111, 2}, \
|
||||
{&_call, 0b1001010000001110, 0b0000000111110001, 4}, \
|
||||
{&_cbi, 0b1001100000000000, 0b0000000011111111, 2}, \
|
||||
{&_com, 0b1001010000000000, 0b0000000111110000, 2}, \
|
||||
{&_cp, 0b0001010000000000, 0b0000001111111111, 2}, \
|
||||
{&_cpc, 0b0000010000000000, 0b0000001111111111, 2}, \
|
||||
{&_cpi, 0b0011000000000000, 0b0000111111111111, 2}, \
|
||||
{&_cpse, 0b0001000000000000, 0b0000001111111111, 2}, \
|
||||
{&_dec, 0b1001010000001010, 0b0000000111110000, 2}, \
|
||||
{&_eicall, 0b1001010100011001, 0b0000000000000000, 2}, \
|
||||
{&_eijmp, 0b1001010000011001, 0b0000000000000000, 2}, \
|
||||
{&_elpm1, 0b1001010111011000, 0b0000000000000000, 2}, \
|
||||
{&_elpm2, 0b1001000000000110, 0b0000000111110000, 2}, \
|
||||
{&_elpm3, 0b1001000000000111, 0b0000000111110000, 2}, \
|
||||
{&_eor, 0b0010010000000000, 0b0000001111111111, 2}, \
|
||||
{&_fmul, 0b0000001100001000, 0b0000000001110111, 2}, \
|
||||
{&_fmuls, 0b0000001110000000, 0b0000000001110111, 2}, \
|
||||
{&_fmulsu, 0b0000001110001000, 0b0000000001110111, 2}, \
|
||||
{&_icall, 0b1001010100001001, 0b0000000000000000, 2}, \
|
||||
{&_ijmp, 0b1001010000001001, 0b0000000000000000, 2}, \
|
||||
{&_in, 0b1011000000000000, 0b0000011111111111, 2}, \
|
||||
{&_inc, 0b1001010000000011, 0b0000000111110000, 2}, \
|
||||
{&_jmp, 0b1001010000001100, 0b0000000111110001, 4}, \
|
||||
{&_ld1, 0b1001000000001100, 0b0000000111110000, 2}, \
|
||||
{&_ld2, 0b1001000000001101, 0b0000000111110000, 2}, \
|
||||
{&_ld3, 0b1001000000001110, 0b0000000111110000, 2}, \
|
||||
{&_ld_ldd2, 0b1001000000001001, 0b0000000111110000, 2}, \
|
||||
{&_ld_ldd3, 0b1001000000001010, 0b0000000111110000, 2}, \
|
||||
{&_ld_ldd4, 0b1000000000001000, 0b0010110111110111, 2}, \
|
||||
{&_ld_ldd_12, 0b1001000000000001, 0b0000000111110000, 2}, \
|
||||
{&_ld_ldd_13, 0b1001000000000010, 0b0000000111110000, 2}, \
|
||||
{&_ld_ldd_14, 0b1000000000000000, 0b0010110111110111, 2}, \
|
||||
{&_ldi, 0b1110000000000000, 0b0000111111111111, 2}, \
|
||||
{&_lds, 0b1001000000000000, 0b0000000111110000, 4}, \
|
||||
{&_lpm1, 0b1001010111001000, 0b0000000000000000, 2}, \
|
||||
{&_lpm2, 0b1001000000000100, 0b0000000111110000, 2}, \
|
||||
{&_lpm3, 0b1001000000000101, 0b0000000111110000, 2}, \
|
||||
{&_lsr, 0b1001010000000110, 0b0000000111110000, 2}, \
|
||||
{&_mov, 0b0010110000000000, 0b0000001111111111, 2}, \
|
||||
{&_movw, 0b0000000100000000, 0b0000000011111111, 2}, \
|
||||
{&_mul, 0b1001110000000000, 0b0000001111111111, 2}, \
|
||||
{&_muls, 0b0000001000000000, 0b0000000011111111, 2}, \
|
||||
{&_mulsu, 0b0000001100000000, 0b0000000001110111, 2}, \
|
||||
{&_neg, 0b1001010000000001, 0b0000000111110000, 2}, \
|
||||
{&_nop, 0b0000000000000000, 0b0000000000000000, 2}, \
|
||||
{&_or, 0b0010100000000000, 0b0000001111111111, 2}, \
|
||||
{&_out, 0b1011100000000000, 0b0000011111111111, 2}, \
|
||||
{&_pop, 0b1001000000001111, 0b0000000111110000, 2}, \
|
||||
{&_push, 0b1001001000001111, 0b0000000111110000, 2}, \
|
||||
{&_rcall, 0b1101000000000000, 0b0000111111111111, 2}, \
|
||||
{&_ret, 0b1001010100001000, 0b0000000000000000, 2}, \
|
||||
{&_reti, 0b1001010100011000, 0b0000000000000000, 2}, \
|
||||
{&_rjmp, 0b1100000000000000, 0b0000111111111111, 2}, \
|
||||
{&_ror, 0b1001010000000111, 0b0000000111110000, 2}, \
|
||||
{&_sbc, 0b0000100000000000, 0b0000001111111111, 2}, \
|
||||
{&_sbci, 0b0100000000000000, 0b0000111111111111, 2}, \
|
||||
{&_sbi, 0b1001101000000000, 0b0000000011111111, 2}, \
|
||||
{&_sbic, 0b1001100100000000, 0b0000000011111111, 2}, \
|
||||
{&_sbis, 0b1001101100000000, 0b0000000011111111, 2}, \
|
||||
{&_sbiw, 0b1001011100000000, 0b0000000011111111, 2}, \
|
||||
{&_sbr, 0b0110000000000000, 0b0000111111111111, 2}, \
|
||||
{&_sbrc, 0b1111110000000000, 0b0000000111110111, 2}, \
|
||||
{&_sbrs, 0b1111111000000000, 0b0000000111110111, 2}, \
|
||||
{&_sleep, 0b1001010110001000, 0b0000000000000000, 2}, \
|
||||
{&_spm, 0b1001010111101000, 0b0000000000000000, 2}, \
|
||||
{&_st1, 0b1001001000001100, 0b0000000111110000, 2}, \
|
||||
{&_st2, 0b1001001000001101, 0b0000000111110000, 2}, \
|
||||
{&_st3, 0b1001001000001110, 0b0000000111110000, 2}, \
|
||||
{&_st_std2, 0b1001001000001001, 0b0000000111110000, 2}, \
|
||||
{&_st_std3, 0b1001001000001010, 0b0000000111110000, 2}, \
|
||||
{&_st_std4, 0b1000001000001000, 0b0010110111110111, 2}, \
|
||||
{&_st_std_12, 0b1001001000000001, 0b0000000111110000, 2}, \
|
||||
{&_st_std_13, 0b1001001000000010, 0b0000000111110000, 2}, \
|
||||
{&_st_std_14, 0b1000001000000000, 0b0010110111110111, 2}, \
|
||||
{&_sts, 0b1001001000000000, 0b0000000111110000, 4}, \
|
||||
{&_sub, 0b0001100000000000, 0b0000001111111111, 2}, \
|
||||
{&_subi, 0b0101000000000000, 0b0000111111111111, 2}, \
|
||||
{&_swap, 0b1001010000000010, 0b0000000111110000, 2}, \
|
||||
{&_wdr, 0b1001010110101000, 0b0000000000000000, 2} }
|
||||
#endif // ifndef __GENERATED_INSTR_H__
|
||||
176
inc/generated_AVRrc.h
Normal file
176
inc/generated_AVRrc.h
Normal file
@@ -0,0 +1,176 @@
|
||||
#ifndef __GENERATED_INSTR_H__
|
||||
#define __GENERATED_INSTR_H__
|
||||
#include "instr.h"
|
||||
#include "mem.h"
|
||||
#include <stdio.h>
|
||||
#include "addrs.h"
|
||||
|
||||
uint8_t _adc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _add (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _adiw (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _and (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _andi (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _asr (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _bclr (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _bld (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _brbc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _brbs (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _break (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _bset (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _bst (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _call (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _cbi (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _com (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _cp (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _cpc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _cpi (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _cpse (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _dec (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _des (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _eicall (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _eijmp (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _elpm1 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _elpm2 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _elpm3 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _eor (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _fmul (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _fmuls (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _fmulsu (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _icall (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ijmp (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _in (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _inc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _jmp (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lac (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _las (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lat (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld1 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld2 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld3 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld_ldd2 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld_ldd3 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld_ldd4 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld_ldd_12 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld_ldd_13 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld_ldd_14 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ldi (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lds (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lds_avrrc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lpm1 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lpm2 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lpm3 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lsr (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _mov (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _movw (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _mul (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _muls (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _mulsu (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _neg (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _nop (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _or (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _out (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _pop (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _push (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _rcall (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ret (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _reti (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _rjmp (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ror (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbci (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbi (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbic (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbis (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbiw (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbr (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbrc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbrs (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sleep (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _spm (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st1 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st2 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st3 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st_std2 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st_std3 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st_std4 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st_std_12 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st_std_13 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st_std_14 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sts (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sts_avrrc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sub (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _subi (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _swap (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _wdr (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _xch (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
|
||||
|
||||
#define HANDLER_REGISTERS {\
|
||||
{&_adc, 0b0001110000000000, 0b0000001111111111, 2}, \
|
||||
{&_add, 0b0000110000000000, 0b0000001111111111, 2}, \
|
||||
{&_and, 0b0010000000000000, 0b0000001111111111, 2}, \
|
||||
{&_andi, 0b0111000000000000, 0b0000111111111111, 2}, \
|
||||
{&_asr, 0b1001010000000101, 0b0000000111110000, 2}, \
|
||||
{&_bclr, 0b1001010010001000, 0b0000000001110000, 2}, \
|
||||
{&_bld, 0b1111100000000000, 0b0000000111110111, 2}, \
|
||||
{&_brbc, 0b1111010000000000, 0b0000001111111111, 2}, \
|
||||
{&_brbs, 0b1111000000000000, 0b0000001111111111, 2}, \
|
||||
{&_break, 0b1001010110011000, 0b0000000000000000, 2}, \
|
||||
{&_bset, 0b1001010000001000, 0b0000000001110000, 2}, \
|
||||
{&_bst, 0b1111101000000000, 0b0000000111110111, 2}, \
|
||||
{&_cbi, 0b1001100000000000, 0b0000000011111111, 2}, \
|
||||
{&_com, 0b1001010000000000, 0b0000000111110000, 2}, \
|
||||
{&_cp, 0b0001010000000000, 0b0000001111111111, 2}, \
|
||||
{&_cpc, 0b0000010000000000, 0b0000001111111111, 2}, \
|
||||
{&_cpi, 0b0011000000000000, 0b0000111111111111, 2}, \
|
||||
{&_cpse, 0b0001000000000000, 0b0000001111111111, 2}, \
|
||||
{&_dec, 0b1001010000001010, 0b0000000111110000, 2}, \
|
||||
{&_eor, 0b0010010000000000, 0b0000001111111111, 2}, \
|
||||
{&_icall, 0b1001010100001001, 0b0000000000000000, 2}, \
|
||||
{&_ijmp, 0b1001010000001001, 0b0000000000000000, 2}, \
|
||||
{&_in, 0b1011000000000000, 0b0000011111111111, 2}, \
|
||||
{&_inc, 0b1001010000000011, 0b0000000111110000, 2}, \
|
||||
{&_ld1, 0b1001000000001100, 0b0000000111110000, 2}, \
|
||||
{&_ld2, 0b1001000000001101, 0b0000000111110000, 2}, \
|
||||
{&_ld3, 0b1001000000001110, 0b0000000111110000, 2}, \
|
||||
{&_ld_ldd2, 0b1001000000001001, 0b0000000111110000, 2}, \
|
||||
{&_ld_ldd3, 0b1001000000001010, 0b0000000111110000, 2}, \
|
||||
{&_ld_ldd_12, 0b1001000000000001, 0b0000000111110000, 2}, \
|
||||
{&_ld_ldd_13, 0b1001000000000010, 0b0000000111110000, 2}, \
|
||||
{&_ldi, 0b1110000000000000, 0b0000111111111111, 2}, \
|
||||
{&_lds_avrrc, 0b1010000000000000, 0b0000011111111111, 2}, \
|
||||
{&_lsr, 0b1001010000000110, 0b0000000111110000, 2}, \
|
||||
{&_mov, 0b0010110000000000, 0b0000001111111111, 2}, \
|
||||
{&_neg, 0b1001010000000001, 0b0000000111110000, 2}, \
|
||||
{&_nop, 0b0000000000000000, 0b0000000000000000, 2}, \
|
||||
{&_or, 0b0010100000000000, 0b0000001111111111, 2}, \
|
||||
{&_out, 0b1011100000000000, 0b0000011111111111, 2}, \
|
||||
{&_pop, 0b1001000000001111, 0b0000000111110000, 2}, \
|
||||
{&_push, 0b1001001000001111, 0b0000000111110000, 2}, \
|
||||
{&_rcall, 0b1101000000000000, 0b0000111111111111, 2}, \
|
||||
{&_ret, 0b1001010100001000, 0b0000000000000000, 2}, \
|
||||
{&_reti, 0b1001010100011000, 0b0000000000000000, 2}, \
|
||||
{&_rjmp, 0b1100000000000000, 0b0000111111111111, 2}, \
|
||||
{&_ror, 0b1001010000000111, 0b0000000111110000, 2}, \
|
||||
{&_sbc, 0b0000100000000000, 0b0000001111111111, 2}, \
|
||||
{&_sbci, 0b0100000000000000, 0b0000111111111111, 2}, \
|
||||
{&_sbi, 0b1001101000000000, 0b0000000011111111, 2}, \
|
||||
{&_sbic, 0b1001100100000000, 0b0000000011111111, 2}, \
|
||||
{&_sbis, 0b1001101100000000, 0b0000000011111111, 2}, \
|
||||
{&_sbr, 0b0110000000000000, 0b0000111111111111, 2}, \
|
||||
{&_sbrc, 0b1111110000000000, 0b0000000111110111, 2}, \
|
||||
{&_sbrs, 0b1111111000000000, 0b0000000111110111, 2}, \
|
||||
{&_sleep, 0b1001010110001000, 0b0000000000000000, 2}, \
|
||||
{&_st1, 0b1001001000001100, 0b0000000111110000, 2}, \
|
||||
{&_st2, 0b1001001000001101, 0b0000000111110000, 2}, \
|
||||
{&_st3, 0b1001001000001110, 0b0000000111110000, 2}, \
|
||||
{&_st_std2, 0b1001001000001001, 0b0000000111110000, 2}, \
|
||||
{&_st_std3, 0b1001001000001010, 0b0000000111110000, 2}, \
|
||||
{&_st_std_12, 0b1001001000000001, 0b0000000111110000, 2}, \
|
||||
{&_st_std_13, 0b1001001000000010, 0b0000000111110000, 2}, \
|
||||
{&_sts_avrrc, 0b1010100000000000, 0b0000011111111111, 2}, \
|
||||
{&_sub, 0b0001100000000000, 0b0000001111111111, 2}, \
|
||||
{&_subi, 0b0101000000000000, 0b0000111111111111, 2}, \
|
||||
{&_swap, 0b1001010000000010, 0b0000000111110000, 2}, \
|
||||
{&_wdr, 0b1001010110101000, 0b0000000000000000, 2} }
|
||||
#endif // ifndef __GENERATED_INSTR_H__
|
||||
204
inc/generated_AVRxm.h
Normal file
204
inc/generated_AVRxm.h
Normal file
@@ -0,0 +1,204 @@
|
||||
#ifndef __GENERATED_INSTR_H__
|
||||
#define __GENERATED_INSTR_H__
|
||||
#include "instr.h"
|
||||
#include "mem.h"
|
||||
#include <stdio.h>
|
||||
#include "addrs.h"
|
||||
|
||||
uint8_t _adc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _add (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _adiw (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _and (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _andi (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _asr (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _bclr (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _bld (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _brbc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _brbs (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _break (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _bset (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _bst (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _call (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _cbi (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _com (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _cp (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _cpc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _cpi (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _cpse (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _dec (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _des (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _eicall (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _eijmp (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _elpm1 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _elpm2 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _elpm3 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _eor (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _fmul (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _fmuls (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _fmulsu (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _icall (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ijmp (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _in (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _inc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _jmp (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lac (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _las (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lat (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld1 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld2 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld3 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld_ldd2 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld_ldd3 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld_ldd4 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld_ldd_12 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld_ldd_13 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld_ldd_14 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ldi (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lds (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lds_avrrc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lpm1 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lpm2 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lpm3 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lsr (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _mov (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _movw (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _mul (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _muls (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _mulsu (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _neg (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _nop (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _or (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _out (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _pop (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _push (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _rcall (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ret (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _reti (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _rjmp (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ror (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbci (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbi (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbic (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbis (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbiw (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbr (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbrc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbrs (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sleep (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _spm (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st1 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st2 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st3 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st_std2 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st_std3 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st_std4 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st_std_12 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st_std_13 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st_std_14 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sts (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sts_avrrc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sub (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _subi (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _swap (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _wdr (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _xch (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
|
||||
|
||||
#define HANDLER_REGISTERS {\
|
||||
{&_adc, 0b0001110000000000, 0b0000001111111111, 2}, \
|
||||
{&_add, 0b0000110000000000, 0b0000001111111111, 2}, \
|
||||
{&_adiw, 0b1001011000000000, 0b0000000011111111, 2}, \
|
||||
{&_and, 0b0010000000000000, 0b0000001111111111, 2}, \
|
||||
{&_andi, 0b0111000000000000, 0b0000111111111111, 2}, \
|
||||
{&_asr, 0b1001010000000101, 0b0000000111110000, 2}, \
|
||||
{&_bclr, 0b1001010010001000, 0b0000000001110000, 2}, \
|
||||
{&_bld, 0b1111100000000000, 0b0000000111110111, 2}, \
|
||||
{&_brbc, 0b1111010000000000, 0b0000001111111111, 2}, \
|
||||
{&_brbs, 0b1111000000000000, 0b0000001111111111, 2}, \
|
||||
{&_break, 0b1001010110011000, 0b0000000000000000, 2}, \
|
||||
{&_bset, 0b1001010000001000, 0b0000000001110000, 2}, \
|
||||
{&_bst, 0b1111101000000000, 0b0000000111110111, 2}, \
|
||||
{&_call, 0b1001010000001110, 0b0000000111110001, 4}, \
|
||||
{&_cbi, 0b1001100000000000, 0b0000000011111111, 2}, \
|
||||
{&_com, 0b1001010000000000, 0b0000000111110000, 2}, \
|
||||
{&_cp, 0b0001010000000000, 0b0000001111111111, 2}, \
|
||||
{&_cpc, 0b0000010000000000, 0b0000001111111111, 2}, \
|
||||
{&_cpi, 0b0011000000000000, 0b0000111111111111, 2}, \
|
||||
{&_cpse, 0b0001000000000000, 0b0000001111111111, 2}, \
|
||||
{&_dec, 0b1001010000001010, 0b0000000111110000, 2}, \
|
||||
{&_des, 0b1001010000001011, 0b0000000011110000, 2}, \
|
||||
{&_eicall, 0b1001010100011001, 0b0000000000000000, 2}, \
|
||||
{&_eijmp, 0b1001010000011001, 0b0000000000000000, 2}, \
|
||||
{&_elpm1, 0b1001010111011000, 0b0000000000000000, 2}, \
|
||||
{&_elpm2, 0b1001000000000110, 0b0000000111110000, 2}, \
|
||||
{&_elpm3, 0b1001000000000111, 0b0000000111110000, 2}, \
|
||||
{&_eor, 0b0010010000000000, 0b0000001111111111, 2}, \
|
||||
{&_fmul, 0b0000001100001000, 0b0000000001110111, 2}, \
|
||||
{&_fmuls, 0b0000001110000000, 0b0000000001110111, 2}, \
|
||||
{&_fmulsu, 0b0000001110001000, 0b0000000001110111, 2}, \
|
||||
{&_icall, 0b1001010100001001, 0b0000000000000000, 2}, \
|
||||
{&_ijmp, 0b1001010000001001, 0b0000000000000000, 2}, \
|
||||
{&_in, 0b1011000000000000, 0b0000011111111111, 2}, \
|
||||
{&_inc, 0b1001010000000011, 0b0000000111110000, 2}, \
|
||||
{&_jmp, 0b1001010000001100, 0b0000000111110001, 4}, \
|
||||
{&_lac, 0b1001001000000110, 0b0000000111110000, 2}, \
|
||||
{&_las, 0b1001001000000101, 0b0000000111110000, 2}, \
|
||||
{&_lat, 0b1001001000000111, 0b0000000111110000, 2}, \
|
||||
{&_ld1, 0b1001000000001100, 0b0000000111110000, 2}, \
|
||||
{&_ld2, 0b1001000000001101, 0b0000000111110000, 2}, \
|
||||
{&_ld3, 0b1001000000001110, 0b0000000111110000, 2}, \
|
||||
{&_ld_ldd2, 0b1001000000001001, 0b0000000111110000, 2}, \
|
||||
{&_ld_ldd3, 0b1001000000001010, 0b0000000111110000, 2}, \
|
||||
{&_ld_ldd4, 0b1000000000001000, 0b0010110111110111, 2}, \
|
||||
{&_ld_ldd_12, 0b1001000000000001, 0b0000000111110000, 2}, \
|
||||
{&_ld_ldd_13, 0b1001000000000010, 0b0000000111110000, 2}, \
|
||||
{&_ld_ldd_14, 0b1000000000000000, 0b0010110111110111, 2}, \
|
||||
{&_ldi, 0b1110000000000000, 0b0000111111111111, 2}, \
|
||||
{&_lds, 0b1001000000000000, 0b0000000111110000, 4}, \
|
||||
{&_lpm1, 0b1001010111001000, 0b0000000000000000, 2}, \
|
||||
{&_lpm2, 0b1001000000000100, 0b0000000111110000, 2}, \
|
||||
{&_lpm3, 0b1001000000000101, 0b0000000111110000, 2}, \
|
||||
{&_lsr, 0b1001010000000110, 0b0000000111110000, 2}, \
|
||||
{&_mov, 0b0010110000000000, 0b0000001111111111, 2}, \
|
||||
{&_movw, 0b0000000100000000, 0b0000000011111111, 2}, \
|
||||
{&_mul, 0b1001110000000000, 0b0000001111111111, 2}, \
|
||||
{&_muls, 0b0000001000000000, 0b0000000011111111, 2}, \
|
||||
{&_mulsu, 0b0000001100000000, 0b0000000001110111, 2}, \
|
||||
{&_neg, 0b1001010000000001, 0b0000000111110000, 2}, \
|
||||
{&_nop, 0b0000000000000000, 0b0000000000000000, 2}, \
|
||||
{&_or, 0b0010100000000000, 0b0000001111111111, 2}, \
|
||||
{&_out, 0b1011100000000000, 0b0000011111111111, 2}, \
|
||||
{&_pop, 0b1001000000001111, 0b0000000111110000, 2}, \
|
||||
{&_push, 0b1001001000001111, 0b0000000111110000, 2}, \
|
||||
{&_rcall, 0b1101000000000000, 0b0000111111111111, 2}, \
|
||||
{&_ret, 0b1001010100001000, 0b0000000000000000, 2}, \
|
||||
{&_reti, 0b1001010100011000, 0b0000000000000000, 2}, \
|
||||
{&_rjmp, 0b1100000000000000, 0b0000111111111111, 2}, \
|
||||
{&_ror, 0b1001010000000111, 0b0000000111110000, 2}, \
|
||||
{&_sbc, 0b0000100000000000, 0b0000001111111111, 2}, \
|
||||
{&_sbci, 0b0100000000000000, 0b0000111111111111, 2}, \
|
||||
{&_sbi, 0b1001101000000000, 0b0000000011111111, 2}, \
|
||||
{&_sbic, 0b1001100100000000, 0b0000000011111111, 2}, \
|
||||
{&_sbis, 0b1001101100000000, 0b0000000011111111, 2}, \
|
||||
{&_sbiw, 0b1001011100000000, 0b0000000011111111, 2}, \
|
||||
{&_sbr, 0b0110000000000000, 0b0000111111111111, 2}, \
|
||||
{&_sbrc, 0b1111110000000000, 0b0000000111110111, 2}, \
|
||||
{&_sbrs, 0b1111111000000000, 0b0000000111110111, 2}, \
|
||||
{&_sleep, 0b1001010110001000, 0b0000000000000000, 2}, \
|
||||
{&_st1, 0b1001001000001100, 0b0000000111110000, 2}, \
|
||||
{&_st2, 0b1001001000001101, 0b0000000111110000, 2}, \
|
||||
{&_st3, 0b1001001000001110, 0b0000000111110000, 2}, \
|
||||
{&_st_std2, 0b1001001000001001, 0b0000000111110000, 2}, \
|
||||
{&_st_std3, 0b1001001000001010, 0b0000000111110000, 2}, \
|
||||
{&_st_std4, 0b1000001000001000, 0b0010110111110111, 2}, \
|
||||
{&_st_std_12, 0b1001001000000001, 0b0000000111110000, 2}, \
|
||||
{&_st_std_13, 0b1001001000000010, 0b0000000111110000, 2}, \
|
||||
{&_st_std_14, 0b1000001000000000, 0b0010110111110111, 2}, \
|
||||
{&_sts, 0b1001001000000000, 0b0000000111110000, 4}, \
|
||||
{&_sub, 0b0001100000000000, 0b0000001111111111, 2}, \
|
||||
{&_subi, 0b0101000000000000, 0b0000111111111111, 2}, \
|
||||
{&_swap, 0b1001010000000010, 0b0000000111110000, 2}, \
|
||||
{&_wdr, 0b1001010110101000, 0b0000000000000000, 2}, \
|
||||
{&_xch, 0b1001001000000100, 0b0000000111110000, 2} }
|
||||
#endif // ifndef __GENERATED_INSTR_H__
|
||||
199
inc/generated_AVRxt.h
Normal file
199
inc/generated_AVRxt.h
Normal file
@@ -0,0 +1,199 @@
|
||||
#ifndef __GENERATED_INSTR_H__
|
||||
#define __GENERATED_INSTR_H__
|
||||
#include "instr.h"
|
||||
#include "mem.h"
|
||||
#include <stdio.h>
|
||||
#include "addrs.h"
|
||||
|
||||
uint8_t _adc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _add (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _adiw (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _and (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _andi (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _asr (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _bclr (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _bld (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _brbc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _brbs (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _break (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _bset (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _bst (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _call (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _cbi (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _com (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _cp (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _cpc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _cpi (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _cpse (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _dec (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _des (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _eicall (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _eijmp (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _elpm1 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _elpm2 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _elpm3 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _eor (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _fmul (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _fmuls (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _fmulsu (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _icall (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ijmp (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _in (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _inc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _jmp (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lac (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _las (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lat (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld1 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld2 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld3 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld_ldd2 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld_ldd3 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld_ldd4 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld_ldd_12 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld_ldd_13 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ld_ldd_14 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ldi (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lds (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lds_avrrc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lpm1 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lpm2 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lpm3 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _lsr (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _mov (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _movw (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _mul (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _muls (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _mulsu (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _neg (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _nop (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _or (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _out (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _pop (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _push (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _rcall (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ret (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _reti (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _rjmp (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _ror (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbci (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbi (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbic (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbis (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbiw (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbr (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbrc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sbrs (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sleep (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _spm (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st1 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st2 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st3 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st_std2 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st_std3 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st_std4 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st_std_12 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st_std_13 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _st_std_14 (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sts (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sts_avrrc (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _sub (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _subi (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _swap (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _wdr (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
uint8_t _xch (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
|
||||
|
||||
#define HANDLER_REGISTERS {\
|
||||
{&_adc, 0b0001110000000000, 0b0000001111111111, 2}, \
|
||||
{&_add, 0b0000110000000000, 0b0000001111111111, 2}, \
|
||||
{&_adiw, 0b1001011000000000, 0b0000000011111111, 2}, \
|
||||
{&_and, 0b0010000000000000, 0b0000001111111111, 2}, \
|
||||
{&_andi, 0b0111000000000000, 0b0000111111111111, 2}, \
|
||||
{&_asr, 0b1001010000000101, 0b0000000111110000, 2}, \
|
||||
{&_bclr, 0b1001010010001000, 0b0000000001110000, 2}, \
|
||||
{&_bld, 0b1111100000000000, 0b0000000111110111, 2}, \
|
||||
{&_brbc, 0b1111010000000000, 0b0000001111111111, 2}, \
|
||||
{&_brbs, 0b1111000000000000, 0b0000001111111111, 2}, \
|
||||
{&_break, 0b1001010110011000, 0b0000000000000000, 2}, \
|
||||
{&_bset, 0b1001010000001000, 0b0000000001110000, 2}, \
|
||||
{&_bst, 0b1111101000000000, 0b0000000111110111, 2}, \
|
||||
{&_call, 0b1001010000001110, 0b0000000111110001, 4}, \
|
||||
{&_cbi, 0b1001100000000000, 0b0000000011111111, 2}, \
|
||||
{&_com, 0b1001010000000000, 0b0000000111110000, 2}, \
|
||||
{&_cp, 0b0001010000000000, 0b0000001111111111, 2}, \
|
||||
{&_cpc, 0b0000010000000000, 0b0000001111111111, 2}, \
|
||||
{&_cpi, 0b0011000000000000, 0b0000111111111111, 2}, \
|
||||
{&_cpse, 0b0001000000000000, 0b0000001111111111, 2}, \
|
||||
{&_dec, 0b1001010000001010, 0b0000000111110000, 2}, \
|
||||
{&_eicall, 0b1001010100011001, 0b0000000000000000, 2}, \
|
||||
{&_eijmp, 0b1001010000011001, 0b0000000000000000, 2}, \
|
||||
{&_elpm1, 0b1001010111011000, 0b0000000000000000, 2}, \
|
||||
{&_elpm2, 0b1001000000000110, 0b0000000111110000, 2}, \
|
||||
{&_elpm3, 0b1001000000000111, 0b0000000111110000, 2}, \
|
||||
{&_eor, 0b0010010000000000, 0b0000001111111111, 2}, \
|
||||
{&_fmul, 0b0000001100001000, 0b0000000001110111, 2}, \
|
||||
{&_fmuls, 0b0000001110000000, 0b0000000001110111, 2}, \
|
||||
{&_fmulsu, 0b0000001110001000, 0b0000000001110111, 2}, \
|
||||
{&_icall, 0b1001010100001001, 0b0000000000000000, 2}, \
|
||||
{&_ijmp, 0b1001010000001001, 0b0000000000000000, 2}, \
|
||||
{&_in, 0b1011000000000000, 0b0000011111111111, 2}, \
|
||||
{&_inc, 0b1001010000000011, 0b0000000111110000, 2}, \
|
||||
{&_jmp, 0b1001010000001100, 0b0000000111110001, 4}, \
|
||||
{&_ld1, 0b1001000000001100, 0b0000000111110000, 2}, \
|
||||
{&_ld2, 0b1001000000001101, 0b0000000111110000, 2}, \
|
||||
{&_ld3, 0b1001000000001110, 0b0000000111110000, 2}, \
|
||||
{&_ld_ldd2, 0b1001000000001001, 0b0000000111110000, 2}, \
|
||||
{&_ld_ldd3, 0b1001000000001010, 0b0000000111110000, 2}, \
|
||||
{&_ld_ldd4, 0b1000000000001000, 0b0010110111110111, 2}, \
|
||||
{&_ld_ldd_12, 0b1001000000000001, 0b0000000111110000, 2}, \
|
||||
{&_ld_ldd_13, 0b1001000000000010, 0b0000000111110000, 2}, \
|
||||
{&_ld_ldd_14, 0b1000000000000000, 0b0010110111110111, 2}, \
|
||||
{&_ldi, 0b1110000000000000, 0b0000111111111111, 2}, \
|
||||
{&_lds, 0b1001000000000000, 0b0000000111110000, 4}, \
|
||||
{&_lpm1, 0b1001010111001000, 0b0000000000000000, 2}, \
|
||||
{&_lpm2, 0b1001000000000100, 0b0000000111110000, 2}, \
|
||||
{&_lpm3, 0b1001000000000101, 0b0000000111110000, 2}, \
|
||||
{&_lsr, 0b1001010000000110, 0b0000000111110000, 2}, \
|
||||
{&_mov, 0b0010110000000000, 0b0000001111111111, 2}, \
|
||||
{&_movw, 0b0000000100000000, 0b0000000011111111, 2}, \
|
||||
{&_mul, 0b1001110000000000, 0b0000001111111111, 2}, \
|
||||
{&_muls, 0b0000001000000000, 0b0000000011111111, 2}, \
|
||||
{&_mulsu, 0b0000001100000000, 0b0000000001110111, 2}, \
|
||||
{&_neg, 0b1001010000000001, 0b0000000111110000, 2}, \
|
||||
{&_nop, 0b0000000000000000, 0b0000000000000000, 2}, \
|
||||
{&_or, 0b0010100000000000, 0b0000001111111111, 2}, \
|
||||
{&_out, 0b1011100000000000, 0b0000011111111111, 2}, \
|
||||
{&_pop, 0b1001000000001111, 0b0000000111110000, 2}, \
|
||||
{&_push, 0b1001001000001111, 0b0000000111110000, 2}, \
|
||||
{&_rcall, 0b1101000000000000, 0b0000111111111111, 2}, \
|
||||
{&_ret, 0b1001010100001000, 0b0000000000000000, 2}, \
|
||||
{&_reti, 0b1001010100011000, 0b0000000000000000, 2}, \
|
||||
{&_rjmp, 0b1100000000000000, 0b0000111111111111, 2}, \
|
||||
{&_ror, 0b1001010000000111, 0b0000000111110000, 2}, \
|
||||
{&_sbc, 0b0000100000000000, 0b0000001111111111, 2}, \
|
||||
{&_sbci, 0b0100000000000000, 0b0000111111111111, 2}, \
|
||||
{&_sbi, 0b1001101000000000, 0b0000000011111111, 2}, \
|
||||
{&_sbic, 0b1001100100000000, 0b0000000011111111, 2}, \
|
||||
{&_sbis, 0b1001101100000000, 0b0000000011111111, 2}, \
|
||||
{&_sbiw, 0b1001011100000000, 0b0000000011111111, 2}, \
|
||||
{&_sbr, 0b0110000000000000, 0b0000111111111111, 2}, \
|
||||
{&_sbrc, 0b1111110000000000, 0b0000000111110111, 2}, \
|
||||
{&_sbrs, 0b1111111000000000, 0b0000000111110111, 2}, \
|
||||
{&_sleep, 0b1001010110001000, 0b0000000000000000, 2}, \
|
||||
{&_st1, 0b1001001000001100, 0b0000000111110000, 2}, \
|
||||
{&_st2, 0b1001001000001101, 0b0000000111110000, 2}, \
|
||||
{&_st3, 0b1001001000001110, 0b0000000111110000, 2}, \
|
||||
{&_st_std2, 0b1001001000001001, 0b0000000111110000, 2}, \
|
||||
{&_st_std3, 0b1001001000001010, 0b0000000111110000, 2}, \
|
||||
{&_st_std4, 0b1000001000001000, 0b0010110111110111, 2}, \
|
||||
{&_st_std_12, 0b1001001000000001, 0b0000000111110000, 2}, \
|
||||
{&_st_std_13, 0b1001001000000010, 0b0000000111110000, 2}, \
|
||||
{&_st_std_14, 0b1000001000000000, 0b0010110111110111, 2}, \
|
||||
{&_sts, 0b1001001000000000, 0b0000000111110000, 4}, \
|
||||
{&_sub, 0b0001100000000000, 0b0000001111111111, 2}, \
|
||||
{&_subi, 0b0101000000000000, 0b0000111111111111, 2}, \
|
||||
{&_swap, 0b1001010000000010, 0b0000000111110000, 2}, \
|
||||
{&_wdr, 0b1001010110101000, 0b0000000000000000, 2} }
|
||||
#endif // ifndef __GENERATED_INSTR_H__
|
||||
12
inc/instr.h
12
inc/instr.h
@@ -57,4 +57,16 @@ opcode_t extractOpcode(device_mem_t* devMem, prog_counter_t programCounter);
|
||||
|
||||
|
||||
|
||||
|
||||
#define AVRe 1
|
||||
#define AVRxm 2
|
||||
#define AVRxt 3
|
||||
#define AVRrc 4
|
||||
|
||||
#ifndef ARCH
|
||||
#define ARCH AVRe
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#endif // ifndef __INSTR_H__
|
||||
@@ -4,10 +4,6 @@
|
||||
#include "mem.h"
|
||||
#include <stdio.h>
|
||||
#include "addrs.h"
|
||||
|
||||
uint8_t _nop (prog_counter_t* pcounter, device_mem_t* devMem);
|
||||
|
||||
#define HANDLER_REGISTERS {\
|
||||
{&_nop, 0b0000000000000000, 0b1111111111111111, 2}}
|
||||
#include "generated.h"
|
||||
|
||||
#endif
|
||||
@@ -12,12 +12,22 @@
|
||||
#define MEMDATA_PS MEMSEG_PS
|
||||
|
||||
|
||||
|
||||
#define MEMDATA_GP_REGS 1
|
||||
#define MEMDATA_IO_REGS 2
|
||||
#define MEMDATA_DS 3
|
||||
#define MEMDATA_OPSIZE 5
|
||||
|
||||
|
||||
#define MEMSEG_PC_SEG_NUM 1
|
||||
#define MEMSEG_PC_ADDR 0
|
||||
|
||||
#define MEMSEG_DEFINES {\
|
||||
{MEMSEG_PS, "PS", 2, 1024, 0, 1}, \
|
||||
{MEMSEG_PC_SEG_NUM, "PC", 2, 1, 1024 + MEMSEG_PC_ADDR + 1, 0} \
|
||||
{MEMSEG_PS, "PS", 2, 1024, 2, 1}, \
|
||||
{MEMSEG_PC_SEG_NUM, "PC", 2, 1, 0, 0}, \
|
||||
{MEMDATA_IO_REGS, "IO_REG", 1, 255, (1024 * 2) + 2, 0}, \
|
||||
{MEMDATA_GP_REGS, "GP_REG", 1, 32, (1024 * 2) + 2 + 255, 0}, \
|
||||
{MEMDATA_DS, "DS", 1, 65535, 2, 0} \
|
||||
}
|
||||
|
||||
#endif //ifndef __MEM_SEG_H__
|
||||
@@ -2,9 +2,10 @@
|
||||
#define __RUNNER_H__
|
||||
|
||||
#include <stdint.h>
|
||||
#include "instr.h"
|
||||
#include "mem.h"
|
||||
|
||||
uint8_t makeTick(device_mem_t* devMem);
|
||||
uint8_t makeTick(prog_counter_t* programCounter, instr_h_func* funcarr, device_mem_t* devMem);
|
||||
|
||||
|
||||
#endif // ifndef __RUNNER_H__
|
||||
Reference in New Issue
Block a user