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

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

时间:2024-02-23 12:56:23浏览次数:21  
标签:读后感 esp 汇编语言 程序 第十章 C语言 地址 指令 源代码

一:1.汇编语言是使用助记符来编写程序的。
2. 汇编需要使用汇编器来完成。
3.通过反汇编可以得到人类能够理解的源代码。
4. 汇编语言源文件的扩展名在Windows 中主要是asm,在Limu中主要是s。不过,本章中使用的C语言编译器 BCC32 虽然是在Windows环境下运行的,但使用了s作为汇编语言源文件的扩展名。
S,在高级编程语言的源代码中,指令和数据都是分散在各个位置的,但在编译后它们会被分别汇总到不同的段中。
6. 汇编语言中可以使用跳转指令实现循环和条件分支

二:用C语言编写的源代码,在编译之后也会转换成适配特定 CPU本机代码。再对本机代码进行反汇编,我们就可以得到汇编语言代码,从而可以查看其内容。但是,将本机代码反编译成C语言源代局要比反汇编困难得多。这是因为C语言源代码和本机代码并不是一对应的,我们不能保证得到和编译之前相同的源代码”。

汇编语育源代码中的指令分为两种,一种是会被转换成本的中品的一般指令,另一种是专门针对汇编器的伪指令。伪指令负责告诉【编器程序的结构和汇编的方法,因此也被称为汇编程序指令(asseible
directive )

三:栈是临时存放数据的内存空间,我们马上会讲到的函数调用,及本章后半部分会讲到的局部变量,都会使用栈来存放数据。当需在找中存放多个数据时,需要以 esp 寄存器所指向的地址为起点,计出数据应该存放在哪个地址,然后将数据写人该地址。例如,moll$456,4(%esp) 这条指令就表示将456 这个数值写人从 esp 寄存器所指向的地址起向后4字节的地址中。而 movl8(%esp),%eax 这条指令表示将从 esp 寄存器所指向的地址起向后8字节的地址中的值读取出来并存人eax 寄存器中。

四:C语言中的if条件分支在计算机内部就是这样通过比铰指令和眼转指令来实现的。在C语育源代码中,我们指定当if(a>100),即变量a的值大于100”这个条件为真时调用 MySubA 函数,否则调用
MySubB 函数。与之相对,在汇编语言源代码中,当“变量a的值小于等于100”这个条件为真时调用 MySubB,否则调用 MySubA。二者对条件的描述是相反的。这是因为汇编语言中只有“条件为真时跳转”这种描述形式。如果将代码清单的汇编语言源代码按照同样的流程用C语言描述,就是代码清单的样子。从C语言的角度来看,这样的程序显得很奇怪,但计算机内部就是这样处理的。

标签:读后感,esp,汇编语言,程序,第十章,C语言,地址,指令,源代码
From: https://www.cnblogs.com/SF90/p/18029262

相关文章

  • 使用C# WPF写简单的桌面应用程序
    前言微软真是永远滴神,VisualStudio不愧是宇宙第一IDE,C#相比Java真的是语法简洁优雅案例实现了一个快速重命名的小程序,打包完以后的exe不到200KB,比Java轻的不是一点半点,而且在windows上执行效率很高,直接就可以在windows双击运行创建项目VisualStudio安装选择WPF选择.......
  • 《程序是怎样跑起来的》第五章读书笔记
    从都具有存储程序命令和数据这点来看,内存和磁盘的功能是相同的。在计算机的五大部位中,内存和磁盘也都也都被归类为存储部件。不过利用电流来实现存储的内存,同利用磁效应来实现存储的磁盘,还是有差异的,而从存储容量来看,内存是告诉高价,而磁盘则是低速廉价。程序保护在存储设备中,通过......
  • 《程序是怎样跑起来的》第四章读书笔记
    内存IC中内存IC中有电源,地址信号,数据信号,控制信号等用于输入输出的大量引脚,通过为其指定地址,来进行数据的读写。像WR和RD这样可以让IC运行的信号称为控制信号。当WR和RD同时为0时,写入和读出的操作都无法进行。编程语言中的数据类型表示存储的是何种类型的数据。指针也是一种变量,......
  • 《程序是怎样跑起来的》第四章第二节读后感
    在《程序是怎样跑起来的》第四章第二节中,作者详细介绍了计算机硬件的工作原理和基本组成。通过阅读这一章节,我对计算机硬件的组成及其运行机制有了更深入的理解。首先,这一节阐述了计算机的基本组成,包括中央处理器(CPU)、内存(RAM)、硬盘(HDD/SSD)、显卡(GPU)、主板(Mother......
  • C#程序删除自身
    [DllImport("kernel32.dll")]publicstaticexternuintWinExec(stringlpCmdLine,uintuCmdShow);privatestaticvoidBeginKillSelf(){stringvBatFile=Path.GetDirectoryName(Application.ExecutablePath)+......
  • 处理问题,心态崩了?论一个程序员的基本素养
    分享是最有效的学习方式。博客:https://blog.ktdaddy.com/从最近一个经历说起周五了,轻松点儿,今天破例不写纯技术类的干货文了,聊聊最近一个比较郁闷的经历,这事儿发生在老猫自己身上,不是“总是遇到事故深陷于系统重构泥潭的倒霉小猫”,也不是苦苦面试找工作的“张小帅”(如果想要......
  • 《系统科学方法概论》第二章读后感
    工程与系统工程区别在于工程可以简单理解与一切工作,而系统工程则是以组织建立与经营管理某一系统为目的工程,他有一个为他量身定做一个目标体系,复杂性比较高,但应用广泛。系统工程包含两部分,第一是搞系统工程的步奏,第二,搞他的定量话方法。知识维与逻辑维我认为是知识维比较重要,但两......
  • 10个程序员必逛的网站
    大家好,我是知微!相信各位小伙伴都会经常在网上查找学习资料和经验贴,但是光靠搜索引擎,有时候费时费力,效果还不好。下面为大家整理了10个程序员经常会用到的网站,一起来看看吧!1、B站https://www.bilibili.com/B站原本定位是一个二次元动漫类的网站,经过多年的发展,逐渐成为一个学......
  • 读后感_第十章
    该章描述了汇编语言与程序构成的关系,首先强调了汇编语言与本地代码一一对应,计算机只能直接运行本地代码。可以借助助记符等汇编语言查看源代码,利用反汇编得到汇编语言的源代码,然后通过编译器输出源代码,mov指令是最常用的,可以控制存储地和控制源,同时还有ebp,esp等指令,栈可以处理临......
  • 《程序是怎样跑起来的》第三章读书笔记
    计算机出现运算出错是因为有一些十进制的小数无法转化成二进制数。计算机因为无法正确的表示数值,最后都变成了近似值,计算机这个功能有限的机器设备,是无法处理无限循环的小数的,因此,遇到循环小数时,计算机就会根据变量数据类型所对应的长度将数值从中间截断或者四舍五入。双精度浮点......