似乎有两个汇编语言……一个是各种大厂商维护的,并且跟国内的汇编语言教科书即dos x86基本兼容的汇编,搜索引擎出来的结果也是这个汇编,这个汇编除了windows平台相关,似乎看不到什么人还在用来开发新东西了……
还有一个汇编是在 gnu binunits as 那里定义的汇编,这个汇编其实是裁剪了很多不同的处理器的汇编,变成了某种 common assembly 那种东西,似乎可以看成许多种处理器的汇编语言的并集的一个子集定义,但又有gnu加进去的东西。。他们有一个统一的手册可以在官网查到的。。linux那些汇编,还有各种看到的开源的汇编,实际上走是这个汇编。。
基本上可以认为那种"不同的处理器的汇编语言是不同的"已经是不对的了,对了一部分,但不全对。。在实践中,gnu as已经定义出了一种"通用的汇编"。。似乎可以认为linux就是用这种汇编写的。。(还有其他的东西)
https://sourceware.org/binutils/docs-2.37/
https://sourceware.org/binutils/docs-2.37/as.html
参考 Using as 3-9 章
。。。而且,“GNU AS 通用汇编语言”还不是封闭的,随着新的处理器出来,还可能会整合这种新的处理器的汇编进去,不断增长……
我的论据如下:
一个语言(非自然语言,人工语言,或者说已经被规范化了的语言)的确定并不在某个大厂或者某个不知名的人怎么说这个语言是什么,而在于这个语言如何被形式化,并且通常会形成了形式化的说明。
这种形式化的声明并不是诸如“汇编语言是……。”这样一句话,这还少,不足以完全确定一门语言的面目。具体的可以看各种语言标准。
GNU AS的文档已经完成了一种通用的对不同的机器上的汇编语言的形式化。而所谓的有两种语法,一种是……,一种是……。这没有任何的实践上的现实效力,也没有任何科学意义。逻辑上又叫“循环论证”。
我们把 GNU AS 汇编的一些目录摘抄如下(不代表我对这门语言的肯定):
3 Syntax
3.1 Preprocessing
3.2 Whitespace
3.3 Comments
3.4 Symbols
3.5 Statements
3.6 Constants
3.6.1 Character Constants
3.6.1.1 Strings
3.6.1.2 Characters
3.6.2 Number Constants
3.6.2.1 Integers
3.6.2.2 Bignums
3.6.2.3 Flonums
4 Sections and Relocation
4.1 Background
4.2 Linker Sections
4.3 Assembler Internal Sections
4.4 Sub-Sections
4.5 bss Section
5 Symbols
5.1 Labels
5.2 Giving Symbols Other Values
5.3 Symbol Names
5.4 The Special Dot Symbol
5.5 Symbol Attributes
5.5.1 Value
5.5.2 Type
5.5.3 Symbol Attributes: a.out
5.5.3.1 Descriptor
5.5.3.2 Other
5.5.4 Symbol Attributes for COFF
5.5.4.1 Primary Attributes
5.5.4.2 Auxiliary Attributes
5.5.5 Symbol Attributes for SOM
6 Expressions
6.1 Empty Expressions
6.2 Integer Expressions
6.2.1 Arguments
6.2.2 Operators
6.2.3 Prefix Operator
6.2.4 Infix Operators
7 Assembler Directives
。。。
8 Object Attributes
8.1 GNU Object Attributes
8.1.1 Common GNU attributes
8.1.2 M680x0 Attributes
8.1.3 MIPS Attributes
8.1.4 PowerPC Attributes
8.1.5 IBM z Systems Attributes
8.1.6 MSP430 Attributes
8.2 Defining New Object Attributes
9 Machine Dependent Features
。。。
--
修改:darkk FROM 202.108.53.*
FROM 106.39.25.*