AVR 指令集和设备“缺失”指令

问题描述 投票:0回答:1

我正在尝试按设备构建“缺失”AVR 指令表。

由于缺乏任何可用的文档,我一直在比较 avra、gavrasm 和 avrlass 的源代码,但似乎无法找到任何共识。

例如,ATtiny2313,根据 avra 源,缺少

MUL
EIJMP
EICALL
JMP
ELPM
ESPM

但根据 gavrasm,它没有

MUL
FMUL
EIJMP
EICALL
JMP
CALL
ELPM
ELPM/Z
SPM/Z
DES
XCH
LAS
LAC

(avrlass 在这里是一个异常值,因为它希望用户指定使用的是 AVR、AVRe、AVRe+、AVRrc、AVRxm 或 AVRxt 指令集中的哪一个)

有谁知道我在哪里可以找到(最好是机器可读的)“单一事实来源”?

理想情况下,我想要一个按设备划分的指令集表,以及每个指令集中支持或缺少哪些指令的表。

尽管考虑到 Atmel/Microchip 对此类事物的“热爱”,但我预计在某些情况下“设备 X 支持指令集 Y,除了(在此处插入特殊的极端情况)”。

我还从

https://packs.download.microchip.com/ 下载了 (ATDF) XML 规范,但这些规范似乎不包含指令集。

assembly avr instruction-set
1个回答
0
投票
答案没那么简单。 它的一部分可以在像 avr-gcc 这样的编译器源中找到,当然这不是来自第一原理......

avr-mcus.def 总结了库存 avr-gcc 所识别的 AVR 设备的属性。 感兴趣的列是第二列,它是核心系列,第三列描述了一些更细粒度的 ISA 属性。

avr-devices.cc 提供有关核心系列的详细信息。

例如,当 avr-devices.cc 设置了

LAT

 标志时,则核心(以及属于它的所有设备)支持 
MUL
MUL
MULS
MULSU
FMUL
FMULS
。  用 avr-gcc 术语来说,这就是核心 
FMULSU
avr4/5/51/6
 的情况。

设置

avrxmega2/3/4/5/6/7

时,支持读-修改-写指令
XCH
LAS
LAC
LAT
当闪存大小超过 128 KiB 时,即当设备具有 3 字节 PC(

AVR_ISA_RMW

EIJMP
)时,支持
EICALL
avr6
当 Flash 大小超过 8 KiB 时,支持

avrxmega6/7

JMP
,但即使 Flash 大小为 8 KiB,ATmega808 和 ATmega809 也支持这些指令。

CALL

ELPM
 的支持可以在 avr-devices.cc 中找到,但至少 AT43USB320 除外。  该设备支持外部闪存> 64 KiB,但据我所知不支持
ELPMx
。  数据表没有提供足够的信息。

对于

ELPM

DES
我不知道。  
SPM
 仅少数设备支持。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.