Initial commit

This commit is contained in:
2026-04-10 22:56:16 +03:00
parent 65e7b45861
commit 787857b26f
19 changed files with 4375 additions and 62 deletions

200
inc/generated_AVRe.h Normal file
View 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__