汇编语言与c语言如何混合编程(编程的一些前置知识及底层)

你知道世界上第一台通用计算机Eniac是怎样用来完成不同的任务的吗?通过插拔电缆和开闭开关完成硬布线,往往几个人还要忙上好一阵子。

这样的硬布线过程可以自动化、重复利用吗?冯诺依曼(Von Neumann)提出了存储程序控制的概念。

1 冯诺依曼提出的存储程序控制概念

汇编语言与c语言如何混合编程(编程的一些前置知识及底层)(1)

2 冯诺依曼机的组成

2.1 硬件组成

汇编语言与c语言如何混合编程(编程的一些前置知识及底层)(2)

2.1.1 程序要运行,需要先将可执行文件从输入设备(如磁盘),加载到内存,可执行文件执行时,可将一些数据输出到输出设备。

汇编语言与c语言如何混合编程(编程的一些前置知识及底层)(3)

2.1.2 程序和数据在存储器的存储:

汇编语言与c语言如何混合编程(编程的一些前置知识及底层)(4)

2.1.3 控制器从存储器中取出指令,译码后产生控制信号:

汇编语言与c语言如何混合编程(编程的一些前置知识及底层)(5)

2.1.4 控制信号控制运算器做运算:

汇编语言与c语言如何混合编程(编程的一些前置知识及底层)(6)

2.2 计算机软件系统

计算机软件系统通常被分为系统软件和应用软件两大类。计算机软件包括程序、数据及相关的文档资料。各软件虽然用途不同,但他们的共同点是都存储在计算机存储器中,以某种格式编码书写的程序或数据。

计算机系统软件能保证计算机按照用户的意愿正常运行,为满足用户使用计算机的各种需求,帮助用户管理计算机和维护资源执行用户命令、控制系统调度等任务。应用软件是直接面向用户需要的,它们可以直接帮助用户提高工作质量和效率,甚至可以帮助用户解决某些难题。

汇编语言与c语言如何混合编程(编程的一些前置知识及底层)(7)

系统软件是指担负控制和协调计算机及其外部设备、支持应用软件的开发和运行的一类计算机软件。系统软件一般包括操作系统、语言处理程序、数据库系统和网络管理系统。

应用软件是指为特定领域开发、并为特定目的服务的一类软件。应用软件一般分为两类:

一类是为特定需要开发的实用型软件,如会计核算软件、工程预算软件和教育辅助软件等;

另一类是为了方便用户使用计算机而提供的一种工具软件,如用于文字处理的Word、用于辅助设计的AutoCAD及用于系统维护的瑞星杀毒软件等。

3 计算机的层次结构与编程语言

计算机系统可以从硬件到软件抽象出不同的层次,每一个层次运行在各自的平台(相邻下一层)上:

汇编语言与c语言如何混合编程(编程的一些前置知识及底层)(8)

需要注意的是,对于PC端的开发,其平台是各PC端的操作系统,对于移动端开发,其平台是移动端操作系统,对于web端开发,其平台是各类型的浏览器。

嵌入式编程是直接在硬件层面的编程,程序加载(固化)到可擦写ROM存储器(掉电可读),所谓的烧录也是通过较高电压硬性通过物理的方式改变存储单元。随着硬件技术的发展,ROM与RAM的界限也已越来越模糊了。

4 计算机指令格式

计算机的设计(主要是CPU)可从指令集出发,设计出对应的硬件逻辑层和微代码层,指令集的指令格式一般可以表示为:

汇编语言与c语言如何混合编程(编程的一些前置知识及底层)(9)

I 指令集与硬件逻辑层具有一一对应关系,根据一套需要设计的指令集设计出CPU(硬件逻辑层),或者说,一个CPU(硬件逻辑层)系列有对应的一个指令集。

II 在指令集的基础上可以设计出不同的操作系统。

5 编码与编程

指令和处理的对象都要二进制化。

5.1 数据的编码

5.1.1 数的编码:包括负整数的补码方案,浮点数的IEEE754方案;

5.1.2 字符编码:ASCII、BG2312、Unicode等及Unicode的存储方案utf;

5.1.3 声音编码:包括音波的采样与量化;

5.1.4 图像编码:位图的像素采样与量化及矢量图的数学公式表示;

5.2 指令集(指令编码):指令集包括一套CPU可以完成的操作集合,每一条指令语句由操作码和操作数(上述的数据编码)组成(特殊指令语句可以没有操作数),按指令格式编码为1-6个字节的二进制数序列;

5.3 机器语言与机器语言程序:机器语言就是符合上述指令格式编码的语句集合,按指令格式编写二进制序列组合便是机器语言程序;

5.4 汇编语言、汇编器、汇编程序,汇编语言建立与指令集的一一对应关系,按汇编语言编写汇编程序,由汇编器汇编为机器语言程序;

汇编语言与c语言如何混合编程(编程的一些前置知识及底层)(10)

5.5 高级语言、编译器或解释器、高级语言程序:高级语言建立语法规则建立与汇编语言或机器语言的对应程序。由高级语言编写的高级语言程序由编译器编译或解释器解释为机器语言,由CPU执行。

5.5.1 编译、解释

不同的平台(层次)、不同的领域,有不同的编程语言,当然也有不同的编译器,都是多对多的关系。当然,相同的一份代码,如果有不同操作系统的编译器的话,也可以编译为用于不同平台(操作系统)的可执行文件。

另外,即使相同的平台,相同的源代码,IDE环境的工程选项中,还可以选择不同的编译选项,如Debug、Release版就是不同的编译选项的组合。

5.5.2 连接

对于大型程序来说,需要包含多个源程序文件,加上库文件,这些文件需要连接到一起,形成一个整体的可执行文件。

6 C的hello.c程序的机器语言、汇编语言

C语言也称为中级语言,除了可 直接操作内存外,还在于其没有中间层,与汇编、机器语句有较清晰的对应关系。

汇编语言与c语言如何混合编程(编程的一些前置知识及底层)(11)

7 hello.c程序在硬件中的执行流程

7.1 程序由硬盘加载到内存

汇编语言与c语言如何混合编程(编程的一些前置知识及底层)(12)

7.2 cpu执行程序及输出

汇编语言与c语言如何混合编程(编程的一些前置知识及底层)(13)

-End-

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页