首页 > 编程语言 >读《程序是怎样跑起来的》第十章有感

读《程序是怎样跑起来的》第十章有感

时间:2024-02-29 16:02:32浏览次数:31  
标签:有感 汇编语言 第十章 代码 程序 称为 指令 伪指令 源代码

第十章——通过汇编语言了解二程序的实际构成

1.汇编语言和本地代码是一一对应的
汇编语言:在各本地代码中,附带上表示其功能的英语单词缩写,这些缩写称为助记符,使用助记符的编程语言称为汇编语言。
*通过查看汇编语言编写的源代码了解程序本质,同查看本地代码的源代码是同一级别。
汇编器:汇编语言编写的源代码需要转换成本地代码才能运行,负责转换工作的程序称为汇编器,转换这一处理本身称为汇编。
用汇编语言编写的源代码和本地代码是一一对应的。
反汇编程序:本地代码也可以翻过来转换成汇编语言的源代码,逆变换程序称为反汇编程序,逆变换这一处理本身称为反汇编。

2.通过编译器输出汇编语言的源代码
除了将本地代码反汇编,还可以通过其他方式获取汇编语言的源代码。
大部分C语言编译器可以利用C语言编写的源代码转换成汇编语言的源代码,而不是本地代码。

3.不会转换成本地代码的伪指令
汇编语言的源代码是由转换成本地代码的指令和针对汇编器的伪指令构成的。
伪指令负责把程序的构造及汇编方法指示给汇编器,但伪指令本身无法汇编转换成本地代码的。
段定义:由伪指令segment和ends围起来的部分,是给构成程序的命令和数据的集合体加上一个名字而得到的,称为段定义。

4.汇编语言语法是“操作码+操作数”
汇编语言中,一行表示对CPU的一个指令。
汇编语言指令的语法构造是“操作码+操作数”。
操作码:表示指令动作;
操作数:表示指令对象。

5.最常用的mov指令
对寄存器和内存进行数据存储的mov指令。
mov指令与两个操作数,分别是用来制定数据的存储地和读出源。

6.对栈进行push和pop
程序运行时,一般在内存上申请一个称为栈的数据空间。栈是存储临时数据的区域,特点是通过push和pop进行数据的存储和读出。
esp寄存器对栈进行读写的内存地址进行管理,push指令和pop指令运行后,esp寄存器的值会自动进行更新。

7.函数调用机制

8.函数内部处理

9.始终确保全局变量用的内存空间
在C语言中,在函数外部定义的变量称为全局变量,在函数内部定义的变量称为局部变量。

10.临时确保局部变量用的内存空间

11.循环处理的实现方法
for及if等条件分支改变程序流程的机制称为“流程控制”。

12.条件分支的实现方法
同循环处理的实现方法类似,使用cmp指令和跳转指令。

13.了解程序运行方式的必要性
在某些情况下查看汇编语言的源代码对查找BUG有帮助

以上为本章所学内容。

标签:有感,汇编语言,第十章,代码,程序,称为,指令,伪指令,源代码
From: https://www.cnblogs.com/zyk0915-/p/18044478

相关文章

  • 程序员搞副业经验分享:卖书、做网课,探秘前同事的经验之谈
    为了更深入了解程序员如何进行创收,今天与一位曾在几年前成功通过卖书和网课获取收益的前同事进行了交流。由于他曾有过丰富的经验,我向他请教了一些相关经验,以下是我想获取的信息:你目前还在通过做网课获得收益吗?没有。不再从事网课的主要原因有两点:首先,工作非常繁忙,每天都在996(周......
  • java程序设计 - 第二次实验
    【实验目的】继续熟悉Eclipse的使用并尝试编写一个简单的Applet程序【实验过程】编写一个JavaApplet程序,并正在JavaApplet中写两行文字:“这是一个JavaApplet程序”和“我改变了字体”。importjava.applet.*;importjava.awt.*;publicclassJavaAppletextendsApplet......
  • 鲁班乐标数据抓取程序
    有老板找我开发的一套鲁班乐标数据下载程序,其实就是一套爬虫程序,作为一名资深码农来说这事不难,只是对方需要一个软件操作界面,希望自定义爬取条件。刚开始我第一个想到的是用Python来写,但是对方需要一个操作界面,当然Python也可以完成,由于我主要还是C#.Net为主,因此想到用C#开发试......
  • 《程序是怎样跑起来的》第八章理解
    计算机并不是只能运行本地代码,它还可以运行解释型代码、脚本等,但本地代码是其中一种常见的执行方式。本地代码是指用某种编程语言编写的源代码经过编译器编译后,直接生成可以在特定平台上运行的机器语言代码。这种代码与平台紧密相关,因此通常不可移植到其他平台。当你使用编译器编......
  • 程序是在何种环境下运行
    本章讲解了程序是怎样运行的,不同的程序不同的环境上不一定可以运行,而操作系统和硬件决定了程序的运行环境,同一类的硬件可以选择安装多种操作系统,但从程序运行环境来考虑,CPU的种类是特别重要的,从Windows克服了CPU以外的硬件差异可以看出(CPU不同本地代码不同)。不同操作系统的API不同......
  • 《程序是怎么跑起来的》第十一章
    第十一章的主题是“硬件控制方法”,主要介绍了程序如何控制CPU和主内存以外的硬件。通过阅读这一章,我了解到以下内容:1软件对硬件的重要性:如果没有软件,计算机就只是一个空箱子。软件的存在是硬件正常运行的必要条件,而硬件控制软件则是实现计算机功能的关键2IN和OUT指令:这两个指令......
  • 《程序是怎样他跑起来的》第三章
    读完《程序是怎么跑起来的》第三章后,我对计算机的内存管理有了更清晰的认识。这一章详细介绍了内存的组织方式、地址空间的概念以及内存的分配和释放过程。我了解到内存是计算机中非常重要的资源,程序运行时需要将数据和代码加载到内存中。内存的管理对于高效利用内存、避免内存泄......
  • 《程序是怎样跑起来的》第四章
    在阅读《程序是怎么跑起来的》第四章后,我对计算机的内存管理有了更深入的理解。这一章详细介绍了内存的概念、内存的分配和释放以及内存管理的重要性。我明白了内存是计算机中非常重要的资源,程序运行时需要将数据和代码加载到内存中。通过对内存的合理分配和使用,可以提高程序的性......
  • docker 部署.net core 3.1程序
    docker安装安装所需的软件包,yum-utils提供了yum-config-manager,并且devicemapper存储驱动程序需要device-mapper-persistent-data和lvm2。sudoyuminstall-yyum-utils\device-mapper-persistent-data\lvm2使用命令来设置docker仓库(阿里源,官方源太慢了)sudo......
  • 《程序是怎样跑起来的》第十二章读后感
    《程序是怎样跑起来的》第十二章主要讲的是让计算机思考。程序就如同是由计算机执行的各种指令罗列起来的文章。计算机内部的CPU,通过对该文章的内容进行解析和运行,来控制连接到计算机的各种外围设备。控制就是只CPU和各种设备之间配合进行数据的输入输出管理。程序的使用目的大体......