CPU架构,汇编语言,汇编器
本帖最后由 for_truth 于 2016-08-10 23:38 编辑对于汇编语言,我有过一个疑问:不同的CPU,它们采用的汇编语言的语法可不可以一样?如果可以采用同样的语法,可不可以使用同样的汇编器?不同架构的CPU之间,不仅它们的寄存器数目、位数不同,而且它们各自的电路设计逻辑也不一样,这就决定了它们的语法不可能一样,语法不可能一样也就决定了汇编器也不可能一样。而同一架构的同一系列的CPU,比如说x86系列,它们的寄存器数目、位数可能不一样,但是它们的电路逻辑是一样的,新的CPU在原有的电路逻辑上采用同样的逻辑进行了一些扩展,它们可以做到使用同样的汇编语法,同样的汇编器。 不同架构的机器码不同,指令集也不一样,x86使用复杂指令集,arm使用精简指令集,arm64支持aarch32和aarch64两种执行状态,支持a32,t32和a64指令集,向下兼容arm32指令集;
同一架构的cpu,随着版本更新和指令集的扩展,编译器也是在向前迭代的,另外,arm64寄存器和指令集都有较大扩展,使用aarch64编译器,与arm32是不同的;
汇编器对源文件进行汇编操作,生成处理器能够识别的机器码,这里就涉及汇编器的输入和输出,不同架构机器码不同,输出也就不同,指令集和寄存器不同输入也就不同,使用的汇编器也就不同,不同架构的优化器也可能不同;操作系统不同,可执行程序格式不同,也可能导致汇编器不同;
当然汇编器只是一个软件程序,完全可以做到兼容不同架构,根据编译选项,使用指定架构的语法和词法分析器,优化器等,只是编译器的体积会比较大;
实际上同一套gcc源码就可以编出支持x86,arm,ppc等的编译器;
~\(≧▽≦)/~,受教了。回复 2# chengxta
汇编器就是和html一样,把同样的东西,一种形式转换成另外一种形式。理解了指令集的decode,就很好理解汇编器。
还有叫汇编指令为助记符的,我觉得非常形象。
页:
[1]