就构成 cpus 的程序层而言。
c > 汇编 > 机器码 > 微码 > 电路
固件落在哪里?是机器码吗?是否所有程序都需要编译成机器代码,还是可以在汇编时停止?
就构成 cpus 的程序层而言。
你的术语有些混乱。CPU(“中央处理单元”)是一个处理器,一个复杂的电路,它被输入代表机器指令的值并执行修改寄存器和内存的结果操作;它不是由编程层组成的。
c > 汇编 > 机器码 > 微码 > 电路
这不是一个准确/有效的层次结构。用 C 编写的程序由编译器翻译成较低的形式;较低的形式可以是汇编语言,但也可以是直接二进制机器代码,也可以是虚拟机层的代码,例如 Java 的 JVM。汇编语言是机器代码的紧密表示,其中指令、寄存器和内存位置被赋予符号名称;它们由汇编器翻译成二进制代码,但这个过程比编译器更简单、更直接。微码是机器码的一种低级形式。机器码通常不被翻译成微码,而是机器码的解释器——CPU——本身可能是用微码编写/实现的程序,由低级微码处理器执行。
固件落在哪里?是机器码吗?
固件是固定(“固件”)形式的机器代码/微代码,驻留在 ROM 或 EPROM 上,甚至直接在电路中实现。它是一种软件形式,但区别在于它不驻留在(容易)可修改的内存中。它在概念上与硬件不同,因为硬件是不代表程序的电路、内存、总线等。
是否所有程序都需要编译成机器代码,还是可以在汇编时停止?
如上所述,汇编语言是机器语言的符号表示;它不能被CPU直接处理;它必须翻译成机器语言。
有关所有这些术语和问题的更多详细信息当然可以在 Wikipedia 和其他 Internet 资源以及介绍性编程书籍中找到。
固件是机器代码,通常放置在硬件上的某个存储中,以使该硬件发挥作用。也就是说,固件通常用低级语言(无论是 C 语言还是汇编语言)编写,编译并汇编成机器代码,并放置在该存储上的已知位置,硬件在其启动过程中可以从该位置读取一个已知的位置,并开始执行该机器代码。
这取决于您所说的“固件”。如果您指的是嵌入式系统的软件,那么它是一个程序(例如用C编写的),它被编译成机器代码。在某些情况下,“固件”也可能指微码。
您不能停留在装配级别:机器(真实或虚拟)需要机器代码。
然而,并不是所有的程序都被编译:有直接执行源代码的解释器。
带有 CPU 的固件是微代码。
机器码是什么汇编模型。