- 主题:大厂汇编+GNU AS 通用汇编语言是真相,Intel的二元论就是胡说
似乎有两个汇编语言……一个是各种大厂商维护的,并且跟国内的汇编语言教科书即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.*
他们胡说的
【 在 xiaoju 的大作中提到: 】
: MS用的叫Intel汇编,Linux用的叫AT&T汇编
: Intel的指令手册就是这么写的
:
--
FROM 117.136.38.*
就是统一了,虽然差异还在
【 在 eggcar 的大作中提到: 】
: 本来就是跟着编译器走的,这有啥好奇怪的
: 还以为x86跟arm riscv mips统一了呢
--
FROM 117.136.38.*
你的这个说法是错的,是真正的民科。
【 在 philbloo 的大作中提到: 】
: 喷了 谁给这个帖子加的精?整个胡说八道
:
: 你写过程序没?能分清 syntax 和 semantics 的区别吗?你肯定没写过汇编,估计也没读过吧?搞得懂 inline asm 跟 asm 的区别吗?知道后端是怎么 lower 跟 emit 的吗?为什么各种架构都用一样的 codegen 来描述,你明白不?能分清 compiler 跟 assembler 吗?各种架构的手册读过几页?居然如此自大说 intel 手册胡说。 Linux/win 是用汇编写的,这是九十年代初民智未开的时候流行的谬论,你现在重新发现了一遍。
: ...................
--
FROM 202.108.53.*
一个语言(非自然语言,人工语言,或者说已经被规范化了的语言)的确定并不在某个大厂或者某个不知名的人怎么说这个语言是什么,而在于这个语言如何被形式化,并且通常会形成了形式化的说明。
这种形式化的声明并不是诸如“汇编语言是……。”这样一句话,这还少,不足以完全确定一门语言的面目。具体的可以看各种语言标准。
GNU AS的文档已经完成了一种通用的对不同的机器上的汇编语言的形式化。而所谓的有两种语法,一种是……,一种是……。这没有任何的实践上的现实效力,也没有任何科学意义。逻辑上又叫“循环论证”。
--
FROM 202.108.53.*
你自己玩吧。
【 在 philbloo 的大作中提到: 】
: 我跟你讲两个事实: AS 用的那套语法没有形式化,更不是科学。
:
: 其它的话再跟你多说一句都是浪费我时间。跟小菊聊天都比跟你聊天有意思。
: ...................
--
FROM 223.104.38.*