繁体   English   中英

这是什么汇编语言/架构?

[英]What assembly language/architecture is this?

我遇到了这两个文件(它们是用意大利语写的,虽然代码注释是英文的):

  1. http://home.deib.polimi.it/brandole/acsocr/L13%20-%20Generic%20Assembly.pdf
  2. http://home.deib.polimi.it/brandole/acsocr/L14%20-%20Assembly%20Programming.pdf

它们描述了我无法识别的汇编指令集和语法。 例如,它说下面的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语法。 然而,论文中描述的内容对我来说看起来很新鲜。 以下是我对指令集的看法:

  • SVCB等指令的存在让我想起了ARM架构。
  • 但是有一些指令,如HALTMOVESTORELOAD ,这些指令在ARM,x86和x86-64中不可用。 或者,至少,他们在这些架构上有其他名称。
  • 该文档指出该体系结构只有几十条指令。 这让我觉得它必须是一个非常古老的/嵌入式架构。
  • 该文件还指出,指令执行“非常简单的操作”(尽管它没有给出“简单”这个词的定义)。 这也让我觉得它必须是一个非常古老的/嵌入式架构。
  • 这些文件引用了MIPS,但MIPS看起来有所不同,原因有很多。 例如:文件' BLE占用一个操作数,而在MIPS中占用三个; MIPS没有SVC ,它有syscall
  • 在网上看,我发现它看起来像一个旧的摩托罗拉架构,虽然我无法找到与任何摩托罗拉架构的确切对应。

以下是我对语法的看法:

  • 左操作数用作目标,寄存器没有前缀。 这让我想起了英特尔的语法。
  • 20(SP)这样的操作数让我想起了AT&T语法(除了寄存器表示法)。
  • 冒号后面没有标签。
  • EQU这样的元指令不以点为前缀。 它们甚至不是作为元指令呈现的,而是作为真实的指令。
  • 评论开始于! 这导致我进入SPARC程序集,但SPARC在许多方面有所不同(例如寄存器以%为前缀)。

这些文件没有给架构任何名称,它没有告诉寄存器的大小,也没有引用任何编译器或解释器。 我有点困惑,我开始认为整个架构和语法都是由作者发明的(但那么,为什么呢?)。

那么,你对它可能是什么架构有任何线索吗?

它是一个假的处理器,没有人真正构建这样的真正的32位处理器。 这在教育中并不罕见,教师的优先级与芯片设计师的优先级截然不同。 它是一个理想化的处理器,没有真正的限制。

这是一个非常正交的设计,是什么让你想到摩托罗拉处理器。 68000芯片是他们的规范设计。 它存活了很长一段时间,Apple和许多Unix机器厂商是他们最大的客户。 非常狂热的程序员粉丝,正交设计对逻辑思想家的吸引力很大。 但它没有生存,680x0家庭消失了。 英特尔是主要的Dark Vader,一家始终专注于实用设计的公司。 使它们尽可能快速和兼容,干净并不重要,因为这是C编译器编写者的问题。 速度胜过任何时候漂亮。

使用假处理器进行教学可以追溯到很久以前。 不确定他是不是第一个,但唐纳德克努特创造了两个有影响力的假设计。 他的MIX设计是第一个,今天很有趣,只是为了看看50年前的实际约束。 当6位字节统治世界时,36位处理器很常见。 取而代之的是他的MMIX设计,一个假的64位RISC处理器。 重要的是在九十年代后期突破界限。 不再。 兼容性更重要,处理器实际上不再执行机器代码指令。 他们翻译它们,就像.NET或Java抖动一样。 对于能够同时执行多个微操作的内部和未记录的微操作执行引擎,尽可能不按顺序执行。

这是太多细节对一个学生曾经获得暴露在101 Assembly类。 他们需要学习基础知识。 堆栈帧的概念(添加sp,#-4),CPU寄存器(R0,R1等),将参数传递给函数,寻址模式(24(SP))。 今天仍然非常重要的概念。 走到楼梯顶端的小台阶非常重要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM