汇编语言的"多"层结构与理解----希望讨论
hswxf 2004-11-10 06:03:02 汇编语言是一门精确的描述语言,描述对象是与之对应的系统平台。系统平台的精确行为可以由汇编语言一一对应出来。汇编语言的作用也就是完成这一平台的细节控制与影响。
从很简单的4位、8位汇编开始,我们是可以很直观地看到汇编对硬件的控制,以及对系统的构造(软件)。在16位汇编开始,在以IBM为典型固化语言方式的发展中,一些常见的汇编级模块被封装在如ROM等器件中,成为硬件的一部分或说成为一个功能,这时的汇编语言是我们绝大多数人熟悉的形式,通过对这些典型模块的(功能)调用,就可以完成对系统平台的控制与反馈。
16位的汇编模式,是最常见的通用教学用汇编语言,它的一个主要特点是对硬件的控制比较直接,从指令中我们可以理解到8086体系的工作原理与控制方式。同样在简单化与方便的原则下我们也可以产生一些工作软件,甚至形成对硬件与已有资源(实际上是相对的)控制,也就是说形成操作系统概念。这不是很难的。
32位(24位)模式下的结构系统(80X86)发生了一些变化,主要是针对8086下的数据保护与管理增加了一些功能性指令,主要是在16位指令结构上增加一个高位(16位等)的“保护”数据区,原则上访问这些指令必需与这些“保护”区的数据一致才行;因此在32位指令(不是16位了)中,除了新增加的,对一些“兼容(16位下的)”指令访问,要注意它的“位置”(一般在低16位上)以及对“保护区”的访问(数据结构终于出现在汇编中了);这一阶段的汇编语言还是具有16位的特点(对硬件理解要求较高、可以直接形成对操作系统概念)。但这一概念受到另一个商业化概念的影响很大。
WIN32下的汇编语言,在特征上与传统的(上述)有了一些不同,典型的有六处(本文较长,略)。我们所说的系统平台是一个相对的概念,它的最低层应该是以硬件为核心的、以固件为核心的,以一个较具体的操作系统(软件,如WINDOWS等)为学习对象,对我们的基础并没有多少好处,理由有五个(同上,略)。但它在一些流行的软件如人WINDOWS中具有一定的方便性,也就构成了一个极为典型的汇编语言模式,其实它所直接描述的对象是一个具体的操作系统,而不是一个低层资源,它的一些概念被巧妙地更换了(如BIOS固件的发展被认为与如API具有同等意义等),这样一个很流行的软件(操作系统)成就了一种独特的汇编语言,它与一些源于概念驱动的语言(如C等)表现的相当一致(本人分析了它的7个特征得出的结论)。当然,这只是一门存在于一个操作系统内的语言,它的极品表现是ILASM,一个在.NET下的汇编语言。
可以说,只有所谓实模式(16位)与保护模式(32位)下的汇编,让我们多少还能想到经典的魅力,而对流行下的汇编概念,只能说好玩就玩玩,它的确可以是汇编类的,但不经典!
谁能说郭敬明就不是个“坐家”,我女朋友看他写的玩艺就是费手帕,还说:比巴金还厉害!
晕!----你敢说女朋友没眼光---死你的吧!
如果兴趣,可以给出全文(有图)