汇编语言包括什么
汇编语言作为底层开发语言,与CPU紧密相连,但并不能将其等同于CPU的机器指令。不同的CPU架构拥有各自独特的指令系统,如x86、PowerPC和ARM等。甚至在同一架构下,也可能存在多套指令集。以ARM为例,除了常见的32位指令集外,还存在用于低功耗场景的16位Thumb指令集。
汇编语言是一套语法规则和助记符的集合,具有包容不同指令集的本质。它可以根据CPU体系划分为不同的类型。在IBM PC体系中,由于IBM最早推出PC机,后续的体系大多与其兼容,因此也采用了相同的汇编语言。而ARM架构则独立发展出独立的汇编语言,因其指令集与x86完全不同。
值得注意的是,CPU只是限定了机器码,汇编语言与编译器也密切相关。作为早期出现的编程语言,汇编语言没有像C语言一样有标准定义,因此各编译器厂商有自己的实现方式。目前最著名的编译器有MA和GNU A。MA只支持x86架构,主要用于DOS/Windows平台,而GNU A是开源产品,支持大多数CPU架构,主要用于Linux系统。两者的主要区别在于伪指令的不同,这些伪指令用于告诉编译器如何工作,与编译器相关,而与CPU无关。
汇编语言还有不同的格式,如Intel格式和AT&T格式。Intel格式常见于Windows平台,而AT&T格式则最初由贝尔实验室为Unix系统推出。GNU汇编器和调试器gdb支持这两种格式之间的切换。而内嵌汇编,用于C语言和汇编语言的混合编程,与编译器紧密相关。目前主要有GNU的内嵌汇编和MA的内嵌汇编两种,它们的语法与普通汇编有所不同,需要专门学习。