固件机器代码?

时间:2011-02-07 19:59:02

标签: assembly fpga

就构成cpus的程序层而言。

c&gt;装配&gt;机器代码&gt; <微码>电路

固件在哪里?是机器代码吗?是否需要将所有程序编译成机器代码,还是可以在汇编时停止?

4 个答案:

答案 0 :(得分:5)

  

就程序层而言   弥补cpus。

你的术语有些混乱。 CPU是一个处理器,一个复杂的电路,其输入代表机器指令的值,并执行修改寄存器和存储器的结果操作;它不是由编程层组成的。

  

c&gt;装配&gt;机器代码&gt;   <微码>电路

这不是准确/有效的层次结构。用C编写的程序由编译器翻译成较低的形式;下层表单可以是汇编语言,但它也可以是直接二进制机器代码,也可以是虚拟机层的代码,例如Java的JVM。汇编语言是机器代码的近似表示,其中指令,寄存器和存储器位置被赋予符号名称;它们由汇编程序转换为二进制代码,但该过程比编译器更简单,更直接。 Microcode是一种低级形式的机器代码。机器代码通常不转换为微代码,而是机器代码的解释器--CPU - 本身可以是由微代码编写/实现的程序,其由低级微代码处理器执行。电路是执行微代码的基础硬件层(如果没有微代码级别,则为机器代码)。

  

固件在哪里?是吗?   机器码?

固件是固定(“坚固”)形式的机器代码/微代码,驻留在ROM或EPROM上,甚至直接在电路中实现。它是一种软件形式,但其区别在于它不存在于(容易)可修改的存储器中。它在概念上与硬件不同,因为硬件是不代表程序的电路,存储器,总线等。

  

是否需要编译所有程序   进入机器代码,或者它可以停止   在集会?

如上所述,汇编语言是机器语言的象征性表示;它不能由CPU直接处理;它必须翻译成机器语言。

关于所有这些条款和问题的更多零售当然可以在维基百科和其他互联网资源以及入门编程书籍中找到。

答案 1 :(得分:3)

固件是机器代码,通常放在硬件的某个存储器中,以实现硬件功能。也就是说,固件通常用低级语言(无论是C语言还是汇编语言)编写,编译并组装成机器代码,并放置在此存储器上的已知位置,其中硬件在其启动过程中可以从已知位置,并开始执行该机器代码。

答案 2 :(得分:1)

这取决于你所谓的“固件”。如果您参考嵌入式系统的软件,那么它是一个程序(例如用C编写),它被编译成机器代码。在某些情况下,“固件”也可能指微码。

您不能在程序集级别停止:机器(真实或虚拟)需要机器代码。

但是,并非所有程序都已编译:有interpreters直接执行源代码。

答案 3 :(得分:0)

与CPU的固件是微代码。

机器代码就是装配模型。