- 应用通过操作系统控制硬件。
- 操作系统的硬件控制功能,通常是通过一些小的函数集合体的形式来提供的。这些函数及函数调用的行为统称为系统调用。也就是应用对操作系统的功能进行调用的意思。
- 间接调用系统调用:
- 文件是操作系统对磁盘媒介空间的抽象化。
- Windows通过名为API的函数集来提供系统调用。(Application Programming Interface,应用程序接口)
- Windows是通过时钟分割技术来实现多任务功能的。
- 时钟分割指的是在短时间间隔内,多个程序切换运行的方式。在用户看来就是多个程序在同时运行。
- 设备驱动是操作系统的一部分,提供了同硬件进行基本的输入输出的功能。
- 程序是操作系统、中间件、应用等所有软件的统称。
- 把高级编程语言转化成机器语言的叫编译器;把汇编语言转化成机器语言的叫汇编器。
- 用汇编语言编写的源代码和机器语言是一一对应的。
- 命令提示符中的CD:change dirctory
- 伪指令本身无法汇编转换成本地代码
- 举例
由伪指令segment和ends围起来的部分,是给构成程序的命令和数据的集合体加上一个名字而得到的,成为段定义。段定义的英文表达segment具有“区域”的意思。一个汇编程序由多个段定义构成。 - 汇编语言指令的语法结构是 操作码+操作数,操作码形式由CPU种类决定。
- 代码的运行:
-CPU中的寄存器
- 栈
- 函数调用机制
(2)esp的值被直接存储在了edp寄存器中 - 函数的内部处理
(1)先将ebp的值暂时保存在栈中,因为这个值可能是有用的。
(2)esp寄存器保存着栈地址。
(3)用[ebp+8]指定栈中存储的123,将其读到eax寄存器(累加寄存器)中。
(4)把[ebp+8]指定的数据和[ebp+12]指定的数据加到一起再存到eax寄存器中
(6)执行后,函数返回目的地的内存地址会自动出栈,程序流程就会返回10-4的Call_AddNum的下一行。 - 函数的参数是通过栈来传递的,返回值是通过寄存器来返回的。
- 全局变量定义在内存空间中;局部变量只在函数处理运行期间临时保存在寄存器和栈中。
(第十章还是看书吧) - 一个来自编书者的建议: