The AVR instruction set is a bit more regular than z80's, which allows us for simpler upcode spitting logic (simplicity which is lost when we need to take into account all AVR models and instruction constraints on each models). This file categorizes all available ops with their opcode signature. X means upcode bit. Categories are in descending order of "popularity" Mnemonics with "*" are a bit special. ### 16-bit ## Plain XXXX XXXX XXXX XXXX BREAK, CLC, CLH, CLI, CLN, CLS, CLT, CLV, CLZ, EICALL, EIJMP, ELPM*, ICALL, IJMP, NOP, RET, RETI, SEC, SEH, SEI, SEN, SES, SET, SEV, SEZ, SLEEP, SPM*, WDR ## Rd(5) XXXX XXXd dddd XXXX ASR, COM, DEC, ELPM*, INC, LAC, LAS, LAT, LD*, LPM*, LSL*, LSR, NEG, POP, PUSH, ROR, ST*, SWAP, XCH ## Rd(5) + Rr(5) XXXX XXrd dddd rrrr ADC, ADD, AND, CLR, CP, CPC, CPSE, EOR, MOV, MUL, OR, ROL*, SBC, SUB, TST* ## k(7) XXXX XXkk kkkk kXXX BRCC, BRCS, BREQ, BRGE, BRHC, BRHS, BRID, BRIE, BRLO, BRLT, BRMI, BRNE, BRPL, BRSH, BRTC, BRTS, BRVC, BRVS ## Rd(4) + K(8) XXXX KKKK dddd KKKK ANDI, CBR*, CPI, LDI, ORI, SBCI, SBR, SUBI ## Rd(5) + bit XXXX XXXd dddd Xbbb BLD, BST, SBRC, SBRS ## A(5) + bit XXXX XXXX AAAA Abbb CBI, SBI, SBIC, SBIS ## Rd(3) + Rr(3) XXXX XXXX Xddd Xrrr FMUL, FMULS, FMULSU, MULSU ## Rd(4) + Rr(4) XXXX XXXX dddd rrrr MOVW, MULS ## Rd(5) + A(6) XXXX XAAd dddd AAAA IN, OUT ## Rd(4) + k(7) XXXX Xkkk dddd kkkk LDS*, STS* ## Rd(2) + K XXXX XXXX KKdd KKKK ADIW, SBIW ## Rd(4) XXXX XXXX dddd XXXX SER ## K(4) XXXX XXXX KKKK XXXX DES ## k(12) XXXX kkkk kkkk kkkk RCALL, RJMP ## SREG XXXX XXXX Xsss XXXX BCLR, BSET ## SREG + k(7) XXXX XXkk kkkk ksss BRBC, BRBS ### 32-bit ## k(22) XXXX XXXk kkkk XXXk kkkk kkkk kkkk kkkk CALL, JMP ## Rd(5) + k(16) XXXX XXXd dddd XXXX kkkk kkkk kkkk kkkk LDS*, STS*