第10章通过汇编了解程序的实际构成

汇编语言的源代码组成:由转换成本地代码的指令(操作码)与针对会汇编器的伪指令构成
伪指令:负责把程序的构造及汇编的方法指示给汇编器,伪指令本身无法转换成本地代码。
段定义:用来划定范围区域,是一个连续的内存空间,在程序中表示一段命令和数据等程序构成的集合体,一个程序由多个段构成
汇编语言的segment伪指令表示段定义的开始,ends伪指令表示段定义的结束,group伪指令将源代码中不同的段定义在本地代码程序中整合为一个(多个段定义汇总成一个,如功能类型的多个段定义),proc/endp伪指令包含的部分表示函数的处理过程,end源代码结束
在源代码中,即使指令和数据是混杂编写的,经过编译或者汇编后的本地代码,都会转换成段定义划分整齐的本地代码
汇编语言的语法:由操作码(动作) + 操作数(对象)组成,不过也存在只有操作码的指令,多个操作数时使用逗号分割开,一行表示对CPU的一个指令
操作数中指定了寄存器名、内存地址、常数等,能够使用何种形式的操作码,由CPU的架构类型决定
mov指令:对寄存器和内存进行数据存储,mov A,B 把B的值赋给A,操作数A, B可以为寄存器、常数、标签(附加在地址前),以及用[地址]表示的内存地址
栈特性:先进后出,通过push入栈与pop出栈指令进行数据的存储读出,这两个操作指令都只有一个操作数,表示push/pop 的是什么,不需要指定对哪个地址编号的内存进行push/pop,这是因为栈的内存地址由esp寄存器(栈指针)进行自动管理的,因此不需要指定
线程:操作系统分配给CPU的最小运行单位,源代码中的一个函数就相当于一个线程,多线程处理指在一个程序中同时运行多个函数
在多线程处理处理中,用汇编语言记述的代码每运行一行,处理都有可能切换到其它线程(函数)中,为了保证全局调用变量的一致性,防止数据被同时运行的线程覆盖,需要加锁进行处理,保证同一时刻只有一个线程能够修改变量

posted @ 2024-02-24 11:24  mazhu  阅读(1)  评论(0编辑  收藏  举报