首页 > 编程语言 >第10章通过汇编了解程序的实际构成

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

时间:2024-02-24 11:33:23浏览次数:23  
标签: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的最小运行单位,源代码中的一个函数就相当于一个线程,多线程处理指在一个程序中同时运行多个函数
在多线程处理处理中,用汇编语言记述的代码每运行一行,处理都有可能切换到其它线程(函数)中,为了保证全局调用变量的一致性,防止数据被同时运行的线程覆盖,需要加锁进行处理,保证同一时刻只有一个线程能够修改变量

标签:10,操作数,定义,汇编,程序,伪指令,线程,源代码
From: https://www.cnblogs.com/mzz18/p/18022570

相关文章

  • win10系统中环境变量path变成一行显示
    1.问题编辑系统环境变量发现只显示出了一行,而不是以前的一个列表,看起来十分麻烦2.解决参考:win10系统中环境变量path变成一行显示要把这个放在最前面.C:\Windows\System32;......
  • Navicat SQL导入大文件超过100%限制
    我使用Navicat将一个约2.7GB的sql文件导入到一个新的数据库。运行良好,直到我注意到它超过了100%的水平,现在达到了350%。显然没有显示错误。  :修改max_allowed_packet的值:找到my.ini文件【mysql目录下】:在[mysqld]模块【max_allowed_packet=4G】4G为最大修改值,:重启mysql......
  • 《程序是怎样跑起来的》第七章读后感
    这一章让我对不同操作系统的API有了更深入的理解。API是应用程序接口的缩写,它就像是操作系统和程序之间的桥梁,使得程序能够利用操作系统提供的各种功能。不同的操作系统可能有不同的API,这也导致了在不同操作系统上开发程序时需要做出相应的调整。关于虚拟机,我觉得它就像是一......
  • 程序是怎么跑起来的第三章
    在上一章学习了二进制的运算,在本章将学习计算机小数运算的方法,通常认知下,我们认为计算机是不会出现错误的,但实际上小数运算就是一个典型的例子,通常我们所知道的计算机的所有信息都用二进制形式来处理,但是使用二进制来表示整数和小数的方法却有很大不同,二进制转化为十进制,只需要将......
  • 陪玩程序源码,如何引导用户进行点赞操作?
    引导点赞我们需要让按钮做出一些视觉效果来引导用户进行点赞操作,那持续震动无疑是一种好的选择。//love.jsconstlikeBtn=document.getElementById('likeBtn');constheart=document.getElementById('heart')likeBtn.addEventListener('mousemove',()=>{heart.cl......
  • 刘铁猛C#学习笔记10 字段、属性
    这四种东西都是用来表达数据的一、字段(成员变量)曾用名:成员变量是为一个对象或类型存储数据的变量,区别于方法体中的局部变量多个字段组合起来可以表示对象当前的状态起源:C语言中结构体的成员变量一个对象占用的内存空间会被分配给各个字段1.实例字段和静态字段可以分为......
  • 《程序是怎样跑起来的》第六章读后感
    我是计应232班的赵精艺。第六章讲的主要是亲自尝试压缩数据。在正文前的几个问题中我知道了一些有关于本章的内容,并且了解到了可逆压缩与不可逆压缩的不同点:压缩后的数据能够复原的是可逆压缩,无法复原的是不可逆压缩。文件是以字节为单位保存的,文件是将数据存储在磁盘等存储媒介中......
  • 程序是怎样跑起来的第五章观后感
    读完第五章,我了解到了内存和磁盘之间的关系。磁盘缓存,是通过使用内存来提高磁盘访问速度的,虚拟内存是指把磁盘的一部分作为假想内存来使用的,一般来说,程序需要被解读出来,然后运行,如果不读入内存就无法运行这一机制,我们称为储存程序方式。由于WINDOWS具有多重任务,有时同时运行多个......
  • 程序是怎么跑起来的第二章阅读
    首先了解到,CPU(微型处理器)其实是由IC电子部件构成的,包括内存也是IC的一种,CPU的引脚上会有电流通过,给CPU传递数字信息和命令,有电流为1,没电为0,由于二进制的功能强大的运用在计算机之中,所以二进制中只用0和1来表示和运算,计算机处理信息的最小单位为--位,IC的一个引脚就表示二进制的1位,8......
  • P10139 [USACO24JAN] Nap Sort G 题解
    DescriptionBessie正在尝试使用她自己的排序算法对一个整数数组进行排序。她有一堆共\(N\)(\(1\leN\le2\cdot10^5\))个整数\(a_1,a_2,\ldots,a_N\)(\(1\lea_i\le10^{11}\)),她将会按排序顺序将这些数放入一个单独的数组中。她反复查找这堆数中的最小数,将其删除,同时将其添加到......