没有进一步解释为什么我想知道这一点,到底什么是MIPS?当我们更容易学习和理解编程语言(C++、java、python)时,汇编语言的用途是什么?等等)?在大学里有人告诉我,计算机将C++程序转换为程序集,然后转换成1和0的服务器,为什么?它不能直接从C++/Java语言中转换吗?
我在这里说的是MIPS指令集
发布于 2016-01-10 19:04:48
MIPS本质上是一个处理器,如ARM、x86、PowerPC、68K、pdp-11和许多其他处理器。
我们知道,英特尔推动或帮助推动了CISC的想法,并最终不得不求助于基本的微码使用其他东西,如RISC或vliw。
另一方面,MIPS推动或帮助推动RISC的想法。创始人基本上写了一本教科书。推动流水线、高速缓存等的思想与任何为了教育目的学习的架构一样,专利可以让你从零开始制造一个可用的处理器,并避免专利(也可以用ARM,但没有一条与之相匹配的教科书)。例如,看看opencores.org。电气和计算机工程专业的学生可以学习使用这种体系结构的计算机的逻辑设计方面,或者其他方面,但这往往是有用的。计算机工程和计算机科学的学生可以学习汇编语言,至少能更好地理解他们的语言背后所发生的事情。汇编语言本身就是一种语言,尽管有成百上千的汇编语言使用相同的名称:汇编语言,但完全不兼容。但是,一旦您学习了一种语言,通常会使其他语言仅仅是语法问题,同样,它也有助于使高级编程语言仅仅是语法问题。
MIPS可能是我们用的而不是手臂。对于每一个非手臂基础的东西,你可能至少有一个手臂为基础的东西,甚至是你可能正在阅读的x86,其中有一个或一些手臂核心。你必须问他们的市场营销和销售为什么他们没有赢。同样的,68K是一个芯片,而不是一个核心,在ARM接管它之前占主导地位(你拥有的每一个x86,你可能就有一两个基于68K的东西)。
当然,编译器可以完成汇编步骤本身并输出机器代码,而不是汇编语言代码。但要从测试、调试、维护的角度来思考。任何新的处理器都先从汇编程序开始,然后是同时使用链接器,然后是编译器,但是你总是有一个汇编程序,而这个汇编程序最初是用来开发核心的。总有一个汇编程序可用。对于编写编译器的人来说,“查看”汇编语言输出要比机器代码容易得多,他们需要一个反汇编器来调试他们的程序。现在,JIT编译器的发展趋势并不一定需要,但是在不调用其他一两个程序的情况下,直接从中间代码转到机器代码会有很大帮助。所以我们看到了一点。同样,编译到对象并将对象链接到一起也是有意义的,而不是一蹴而就。因此,尽管有可能而且人们已经这样做了,但压倒一切的趋势是拥有一个编译成汇编语言的编译器,将汇编语言组装成机器代码对象的汇编程序,然后是一个链接器,将这些汇编语言链接到最后的二进制文件中。这就是主要工具链的工作方式。
JAVA不仅是一种高级语言,而且有它自己的独立于平台的机器语言。编译器将高级编译成这种机器语言。然后,您必须使用其他语言编写java运行的jvm。或者其他方式来运行那个java。有些编译器被设计成汇编语言,或者将java转换成其他机器代码。但是,使用java的通常方法是让这个编译步骤然后是一个运行时步骤。
Python、pascal和其他人可以并且已经有了一个独立于平台的机器代码,然后需要一个解释器来执行。
MIPS和ARM使IP,一个芯片供应商谁制造芯片(或已经制造,因为他们大多是无晶片)购买这个ip并将其集成到他们的芯片产品的逻辑。PowerPC、英特尔x86、摩托罗拉68K和其他许多公司传统上都是拥有或制造处理器核心ip的人,他们也生产芯片,而且通常不会将这些核心的ip卖给其他芯片厂商。每个人都在法庭上为自己的知识产权辩护,因此很难制作克隆人,甚至是不使用其他人的专利思想的新指令集。
为什么在学校学这个?也许是为了找出事情是如何工作的,以及高级语言的效率有多低,或者优化器和其他技术有多重要,还有很多其他原因。
https://stackoverflow.com/questions/34708386
复制相似问题