我遇到了这两个文件(它们是用意大利语写的,虽然代码注释是英文的):
它们描述了我无法识别的汇编指令集和语法。例如,它表示以下C代码......
int AddInt( int a, int b ) {
int c;
c = a + b
return c;
}
...相当于这组装配说明:
AddInt ADD SP, #-4
PUSH R0
PUSH R1
PUSH R2
PUSH R3
LOAD R0, 24(SP)
LOAD R1, 20(SP)
ADD R0, R1
STORE 24(SP), R0
POP R3
POP R2
POP R1
POP R0
ADD SP, #4
RET
我有ARM,x86和x86-64指令集的经验,并且了解Intel和AT& T ASM语法。然而,论文中描述的内容对我来说看起来很新鲜。以下是我对指令集的想法:
SVC
和B
等指令的存在让我想起了ARM架构。HALT
,MOVE
,STORE
和LOAD
等说明,这些说明在ARM,x86和x86-64中不可用。或者,至少,他们在这些架构上有其他名称。BLE
占用一个操作数,而在MIPS中占用三个操作数; MIPS没有SVC
,它有syscall
。以下是我对语法的看法:
20(SP)
这样的操作数让我想起了AT& T语法(注册表示法除外)。EQU
之类的元指令不以点为前缀。它们甚至不是作为元指令呈现的,而是作为真实的指令。!
开头。这导致我进入SPARC汇编,但SPARC在许多方面有所不同(例如寄存器以%
为前缀)。文档没有给架构任何名称,它没有告诉寄存器的大小,它没有引用任何编译器或解释器。我有点困惑,我开始认为整个架构和语法是由作者发明的(但那么,为什么?)。
那么,你对它可能是什么架构有任何线索吗?
答案 0 :(得分:5)
这是一个虚假的处理器,没有人真正构建这样的真正的32位处理器。这在教育中并不罕见,教师的优先级与芯片设计师的优先级截然不同。它是一个理想化的处理器,没有真正的限制。
这是一个非常正交设计,让您想到摩托罗拉处理器。 68000芯片是他们的规范设计。它存活了很长一段时间,Apple和许多Unix机器厂商是他们最大的客户。非常狂热的程序员粉丝,正交设计对逻辑思想家的吸引力很大。但它没有生存,680x0家庭消失了。英特尔是Dark Vader的主要负责人,该公司一直专注于实用设计。使它们尽可能快速和兼容,干净并不重要,因为这是C编译器编写者的问题。速度胜过任何时候都很漂亮。
使用假处理器进行教学可以追溯到很久以前。不确定他是不是第一个,但唐纳德克努特创造了两个有影响力的假设计。他的MIX设计是第一个,今天很有趣,只是为了看看50年前的实际约束。当6位字节统治世界时,36位处理器很常见。取而代之的是他的MMIX设计,一个假的64位RISC处理器。重要的是在九十年代后期突破界限。不再。兼容性更重要,处理器实际上不再执行机器代码指令。他们翻译他们,就像.NET或Java抖动一样。对于能够同时执行多个微操作的内部和未记录的微操作执行引擎,尽可能不按顺序执行。
方式过多的细节让学生在101大会班中接触过。他们需要学习基础知识。堆栈帧的概念(添加sp,#-4),CPU寄存器(R0,R1等),将参数传递给函数,寻址模式(24(SP))。今天仍然非常重要的概念。小步骤非常非常重要,无法到达楼梯顶端。