为什么AVR指令格式如此复杂?

为什么AVR指令格式如此复杂?,avr,instruction-set,Avr,Instruction Set,在查看atmel 8位AVR指令集时,我发现指令格式非常复杂。很多指令都有不同的位字段,其中操作数/操作码的位在指令中的不同位置:为什么会这样?解码单元用这种格式实际解码操作码和操作数不是更难吗?我认为这主要是出于兼容性的考虑。 在某个阶段,第一条指令会变得更强大,附加的选项被编码在空闲的位中,因此旧的指令字仍会调用旧的行为。这正是他们选择的方式,实际上很少有位字段被很好地组织起来,mips和模仿mips的人都是这样做的,但是很多其他指令集,甚至是旧的cisc,你会认为每个门都很重要,没有。这个

在查看atmel 8位AVR指令集时,我发现指令格式非常复杂。很多指令都有不同的位字段,其中操作数/操作码的位在指令中的不同位置:为什么会这样?解码单元用这种格式实际解码操作码和操作数不是更难吗?

我认为这主要是出于兼容性的考虑。
在某个阶段,第一条指令会变得更强大,附加的选项被编码在空闲的位中,因此旧的指令字仍会调用旧的行为。

这正是他们选择的方式,实际上很少有位字段被很好地组织起来,mips和模仿mips的人都是这样做的,但是很多其他指令集,甚至是旧的cisc,你会认为每个门都很重要,没有。这个问题似乎离题了,因为它与编程无关。获得一个8位微控制器来提供一个能够很好地映射到sane C环境的健壮ISA是一个挑战——一个很有回报的挑战。看一看AVRCC端口——它与嵌入式目标的C工具链一样易于使用。AVR负担不起像早期RISC体系结构那样具有固定字段的大量固定4字节指令。我不得不不同意你的前提。