I'm trying to build a table of "missing" AVR instructions by device.
For want of any available documentation, I've been comparing the source-code of avra, gavrasm and avrlass and I don't seem to be able to find any concensus.
For example, the ATtiny2313, according to the avra source lacks MUL
, EIJMP
, EICALL
, JMP
, ELPM
, and ESPM
.
But according to gavrasm, it doesn't have MUL
, FMUL
, EIJMP
, EICALL
, JMP
, CALL
, ELPM
, ELPM/Z
, SPM/Z
, DES
, XCH
, LAS
, LAC
, LAT
.
(avrlass is an outlier here because it expects the user to specify which of the AVR, AVRe, AVRe+, AVRrc, AVRxm, or AVRxt instruction sets are being used)
Does anyone know where I can find a (preferably, machine readable) "single source of truth"?
Ideally, I'd like a table of instruction set by device, and a table of which instructions are supported or missing in each instruction set.
Although bearing in mind Atmel/Microchip's "love" for such things, I expect there to be several situations where "device X supports instruction set Y EXCEPT (insert peculiar corner case here)".
I've also downloaded the (ATDF) XML specs from https://packs.download.microchip.com/ but these don't seem to include instruction set.
The Atmel/Microchip document AVR-InstructionSet-Manual-DS40002198.pdf has exactly what you seek. Appendix A lists the different cores and which instructions are missing as a baseline, then a table for each device identifying which core it is and which further instructions are missing for that particular device.