在微程序设计中,已有的程序设计语言成果并不能直接迁移,由于微程序设计有其独特的特性。首要的是,对于固件,其效率要求远高于软件。微程序直接影响机器指令系统的效率,而软件最终会转化为机器语言程序。如果微程序设计语言效率低下,就无法提供实用价值。因此,微程序高级语言的开发面临挑战,直到微程序优化问题得到解决,它才可能广泛应用。然而,高级语言的优化技术是在其广泛应用后才逐步发展完善的,这与微程序设计的现状形成对比。
其次,微程序直接控制硬件,且硬件的并行性日益增强。这导致微指令的复杂性远超机器指令,甚至可能比多处理机的并行性还要复杂,且不同硬件的并行特性差异很大。因此,生成微指令码的复杂性远超过高级语言程序的代码生成。
再者,微程序硬件的多样性,如微操作语义、微指令时间关系和数据通路结构的多变性,为微程序高级语言的设计带来了难题。当前的编译系统设计难以实现微程序像软件那样运行在抽象机器上,这是微程序设计语言与传统程序设计语言的一个显著区别。
总的来说,微程序设计语言可以看作是程序设计语言和硬件描述语言的结合。尽管微程序汇编语言目前仍是主要工具,但由于其效率低和设计复杂性,微程序高级语言的发展和进步对于扩大微程序的应用范围和提高设计效率至关重要。
固件工程是把软件工程的概念、理论和经验运用于微程序设计。固件工程和软件工程的不同,不在于工程方法而在于形式化模型。固件与硬件的关系比软件与硬件的关系密切得多;固件的形式化模型与实现微指令的微程序硬件密切相关。固件工程要求微程序硬件应是规整的和易于描述的,能把固件和软件有机地联系成一个整体,并使二者具有公共术语。