[架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作

目录

前言:

第1章 结构化程序与分层编程系统

1.1 程序的经典框架:算法+数据结构

1.2 程序的结构化框架

1.3 程序的层次模型

1.4 程序设计的层次模型

第2章 汇编语言概述

2.1 指令系统编程的困境

2.2 什么是汇编语言

2.3 编程语言的本质

 2.4 汇编语言的本质

第3章 X86汇编程序的结构

3.1 概述

3.2 定义代码段:code标志

3.2 定义数据段:data标志

3.3 定义堆栈段:stack标志

3.4 定义程序的入口:start标志

3.5 定义子程序: PROC标志

3.6 定义程序结束:ends标志

3.7 汇编代码的组织:伪指令

第4章 汇编语言结构化数据表示

4.1 数据表示

4.2 数据类型

4.3 数据属性:正负、编码属性

4.4 数据属性:空间属性

4.5 数据属性:时间属性

4.6 数据属性:访问属性

第5章 汇编语言结构化数据定义

5.1 全局变量定义

5.2 全局常量定义

5.3 数据的标识:有名与无名

5.4 数据内存空间的分配:变量、常量、堆栈

5.5 数据内存空间的释放

第6章 汇编语言结构化数据操作

6.1 汇编语言符号

6.2 数据的搬移

6.3 数据的运算

第7章 程序的控制

7.1 汇编语言符号

7.2 CPU控制指令

7.3 程序控制指令

7.4 无条件转移

7.5 有条件转移

7.6 条件循环

7.7 子程序跳转

第8章 函数调用与堆栈变换

8.1 堆栈的基本操作 ​编辑 

8.2 函数调用时通过堆栈保存现场

8.3 函数调动时通过全局寄存器传递参数

8.4 函数调动时通过全局数据区传递参数

8.5 通过堆栈区传递参数

8.6 函数返回值的传递方式

第9章 汇编语言的调试

9.1 编译调试环境

9.2 debug命令

9.3 系统调用


前言:

汇编语言,又称为低级编程语言,在计算机发展的初期,程序员是通过汇编语言来进行编程的。当然,现代编程,无论是操作系统程序,还是应用程序,几乎不会再直接通过汇编语言进行编程了,只有在极个别的场合才会用到汇编语言,比如需要控制CPU内部寄存器的状态,主要是在系统软件的初始化的一开始阶段。一般情况下,硬件系统的软件启动流程的源代码,是从汇编语言代码开始的,比如uboot最初的初始化CPU的源代码,就是以汇编语言的形式存在的;另外,汇编语言对于理解CPU代码的执行和计算机的底层工作原理非常有帮助。因此,在正式介绍uboot之前,有必要先熟悉一下汇编语言与CPU的指令系统。

第1章 结构化程序与分层编程系统

1.1 程序的经典框架:算法+数据结构

数据结构(structure)是:计算机存储、组织数据的方式。

算法(Algorithm)是:指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。

1.2 程序的结构化框架

1.3 程序的层次模型

1.4 程序设计的层次模型

设计一个程序或软件系统,自底向上的方法有:

(1)二进制指令系统

(2)低级编程语言:汇编

(3)高级编程语言:C/C++/Python

(4)标准库:第三方提供的常见的功能

(5)常见的设计模式

(6)特定业务应用的程序框架

(7)特定业务的应用程序

(8)UML图形化语言描述

每个层次,都包含程序的两个重要方面:算法+数据结构

第2章 汇编语言概述

2.1 指令系统编程的困境

二进制指令,称为第一代计算机语言。

[架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第1张图片

2.2 什么是汇编语言

汇编语言, 即第二代计算机语言,用一些容易理解和记忆的缩写单词来代替一些特定的指令,例如:用"ADD"代表加法操作指令,"SUB"代表减法操作指令,以及"INC"代表增加1,"DEC"代表减去1,"MOV"代表变量传递等等。通过这种方法,人们很容易去阅读已经完成的程序或者理解程序正在执行的功能,对现有程序的bug修复以及运营维护都变得更加简单方便。

2.3 编程语言的本质

[架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第2张图片

 2.4 汇编语言的本质

[架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第3张图片

[架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第4张图片

(1)软件工程

  • 各种伪指令:如何组织程序

(2)数据结构

  • 结构化数据定义:如何组织数据

(3)算法

  • 数据搬运:如何操作数据
  • 数据运算:如何运算数据
  • 程序控制:如何控制程序

第3章 X86汇编程序的结构

3.1 概述

   [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第5张图片 

(1)数据段Data

  • 初始化的数据:    初始的全局变量
  • 未初始化的数据:未初始化的全局变量
  • 堆heap:malloc的内存或数据
  • 栈stack:函数的局部变量

(2)代码段Text:只读

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第6张图片 

3.2 定义代码段:code标志

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第7张图片 

3.2 定义数据段:data标志

  

3.3 定义堆栈段:stack标志

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第8张图片 

3.4 定义程序的入口:start标志

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第9张图片 

3.5 定义子程序: PROC标志

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第10张图片 

3.6 定义程序结束:ends标志

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第11张图片 

3.7 汇编代码的组织:伪指令

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第12张图片 

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第13张图片 

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第14张图片 

第4章 汇编语言结构化数据表示

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第15张图片 

4.1 数据表示

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第16张图片 

4.2 数据类型

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第17张图片 

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第18张图片 

4.3 数据属性:正负、编码属性

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第19张图片 

4.4 数据属性:空间属性

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第20张图片 

4.5 数据属性:时间属性

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第21张图片 

4.6 数据属性:访问属性

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第22张图片 

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第23张图片 

第5章 汇编语言结构化数据定义

5.1 全局变量定义

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第24张图片 

5.2 全局常量定义

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第25张图片 

5.3 数据的标识:有名与无名

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第26张图片 

5.4 数据内存空间的分配:变量、常量、堆栈

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第27张图片 

5.5 数据内存空间的释放

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第28张图片 

第6章 汇编语言结构化数据操作

6.1 汇编语言符号

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第29张图片 

6.2 数据的搬移

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第30张图片 

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第31张图片 

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第32张图片 

6.3 数据的运算

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第33张图片 

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第34张图片 

第7章 程序的控制

7.1 汇编语言符号

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第35张图片 

7.2 CPU控制指令

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第36张图片 

7.3 程序控制指令

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第37张图片 

7.4 无条件转移

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第38张图片 

7.5 有条件转移

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第39张图片 

7.6 条件循环

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第40张图片 

7.7 子程序跳转

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第41张图片 

第8章 函数调用与堆栈变换

8.1 堆栈的基本操作 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第42张图片 

(1)压栈:push =》SP - 2

(2)出栈:pop   =》SP + 2

8.2 函数调用时通过堆栈保存现场

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第43张图片 

8.3 函数调动时通过全局寄存器传递参数

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第44张图片 

8.4 函数调动时通过全局数据区传递参数

  [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第45张图片  

8.5 通过堆栈区传递参数

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第46张图片 

8.6 函数返回值的传递方式

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第47张图片 

第9章 汇编语言的调试

9.1 编译调试环境

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第48张图片 

9.2 debug命令

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第49张图片 

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第50张图片 

9.3 系统调用

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第51张图片 

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第52张图片 

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第53张图片 

 [架构之路-22]:目标系统 - 系统软件 - 汇编语言的结构与X86指令系统以及CPU的工作原理、函数调用与堆栈操作_第54张图片 

你可能感兴趣的:(架构之路,架构,程序,编程语言,汇编语言)