首页 > 编程语言 >编汇语言了解程序的实际构成

编汇语言了解程序的实际构成

时间:2024-02-26 21:35:47浏览次数:23  
标签:语言 编汇 汇编语言 代码 程序 操作码 寄存器 源代码 CPU

一、汇编语言和本地代码
1、汇编语言和本地代码的关系:汇编语言和本地代码是一 一对应的关系。计算机CPU能直接解释运行只有本地代码(机器语言)程序。用C语言等编写的源代码,需要通过各自的编译器编译后,转换成本地代码。通过调查本地代码的内容,可以了解程序最终是以何种形式来运行的。
2、汇编语言:在各本地代码中,附带上表示其功能的英语单词缩写。这些缩写称为助记符,使用助记符的编程语言称为汇编语言。这样,通过查看汇编语言编写的源代码,就可以了解程序的本质了。
3、汇编器:即使是用汇编语言编写的源代码,最终也必须要转换成本地代码才能运行。负责转换工作的程序称为汇编器,转换这一处理本身称为汇编。在将源代码转换成本地代码这个功能方面,汇编器和编译器是同样的。
4、汇编程序:用汇编语言编写的源代码,和本地代码是一一对应的。因而,本地代码也可以反过来转换成汇编语言的源代码。持有该功能的逆变换程序称为反汇编程序,逆变换这一处理本身称为反汇编。
二、
1、除了将本地代码进行反汇编这一方法外,通过其他方式也可以获取汇编语言的源代码。大部分C语言编译器,都可以把利用C语言编写的源代码转换成汇编语言的源代码,而不是本地代码。利用该功能,就可以对C语言的源代码和汇编语言的源代码进行比较研究。
2、(1)通过解析可执行文件得到源代码的方式称为“反汇编”或“反编译”,也称为“反向工程”。市场上销售的软件程序等,有时会在其使用说明书中明确表明禁止反汇编及反编译
(2)AddNum函数仅仅返回两个参数值的相加结果。在实际的编程中,这种函数是不需要的。为了说明函数调用的机制,这里特意使用了这种简单的函数。
(3)在命今提示符上运行的程序中,main函数位于程序运行起始位置。而在Windows上运行的程序中,WinMain函数位于程序运行起始位置。程序运行起始位置也称为“入口点”。
三、汇编语言的语法
1、概念:汇编语言指令的语法结构是操作码+操作数(也存在只有操作码没有操作数的指令)。
2、操作码和操作数:操作码表示的是指令动作,操作数表示的是指令对象。能够使用何种形式的操作码,是由 CPU 的种类决定的。操作数中指定了寄存器名、内存地址、常数等。
3、操作码的功能:

在汇编语言中,类似于mov这样的指令称为“操作码”(opcode),作为指令对象的内存地址及寄存器称为“操作数”(operand)。被转换成CPU可以直接解析运行的二进制的操作码和操作数,就是本地代码。
4、CPU和内存的关系:

本地代码加载到内存后才能运行。内存中存储着构成本地代码的指令和数据。程序运行时,CPU会从内存中把指令和数据读出,然后再将其存储在CPU内部的寄存器中进行处理。
5、x86系列CPU的主要寄存器:

寄存器是CPU中的存储区域。不过,寄存器并不仅仅具有存储指令和数据的功能,也有运算功能。寄存器的名称会通过汇编语言的源代码指定给操作数。内存中的存储区域是用地址编号来区分的。CPU内的寄存器是用eax及ebx 这些名称来区分的。此外,CPU内部也有程序员无法直接操作的寄存器。
四、函数
函数调用机制:在函数的入口处把寄存器ebp的值入栈保存,在函数的出口处出栈,这是C语言编译器的规定。这样做是为了确保函数调用前后cbp寄存器的值不发生变化。

标签:语言,编汇,汇编语言,代码,程序,操作码,寄存器,源代码,CPU
From: https://www.cnblogs.com/zhwzs/p/18035612

相关文章

  • 《程序是怎样跑起来的》第九章
    操作系统类似于工厂的指挥官,与它指挥下的无数应用程序工人之间的互动,构成了现代计算技术的核心。操作系统作为硬件和软件之间的桥梁,其重要性不言而喻。它管理着计算机的资源,为应用程序提供一个运行的平台。这就好比一个高效的物流系统,确保每个应用程序都能得到所需的资源,同时保持......
  • 程序是怎样跑起来的第十一章读后感
    在阅读《程序是怎样跑起来的》第十一章后,我对程序的运行机制有了更深入的理解。这一章主要介绍了内存管理和垃圾回收的相关内容,让我认识到了高效的内存管理对于程序性能和稳定性的重要性。通过本章的学习,我了解到了内存管理的基本概念,包括内存分配、内存访问和内存释放。内存分配......
  • 热补丁(Hot Patching)是指在程序运行过程中,无需停止或重启程序,直接对其进行修补或更新的
    热补丁(HotPatching)的起源可以追溯到早期操作系统和服务器软件的开发。由于这些软件需要在长时间运行过程中保持稳定和可靠,因此需要不停地修复和更新软件中的漏洞和错误。传统的修补方法通常需要重新编译程序、重新部署或重启服务器等,这会导致服务中断和停机时间增加,影响用户体验......
  • 《程序是怎样跑起来的》第四章读后感
    内存:一种IC电子元件,常见DRAM(需要经常刷新保存数据)、SRAM(不需要刷新电路既可以保存数据),可以读取与写入,ROM(只能用来读取的内存)等形式。内存物理组成:电源、地址信号、数据信号、控制信号,用来输入输出的IC引脚(通过为引脚指定地址,进行数据读取)。地址信号引脚数决定了内存......
  • 《程序是怎样跑起来的》第十一章观后感
    我是计应232的学生张凯源,今天来分享《程序是怎样跑起来的》第十一章观后感。这一章讲的是硬件控制方法,首先我们学习了应用和硬件之间是存在关系的,Windows提供了通过应用来间接控制硬件的方法,利用操作系统提供的系统调用功能就可以实现对硬件的控制,即API。Windows控制硬件时借助的......
  • C语言进行时3-数据类型
    数据类型:整数类型:int,char,short,long,longlong(字节:4,1,2,8,8其中long在32位电脑中是4字节)1字节(byte)=8位(bit)浮点数类型:float,double,longdouble(字节:4,8)有效字数:7,15逻辑类型:&&(与),||(或),!(非)整数的输入输出%dint%uunsigned%ldlonglong%luunsignedlonglong......
  • 程序是怎么跑起来的读后感十
    《程序是怎样跑起来的》第十章读后感在阅读了《程序是怎样跑起来的》这本书的第十章后,我对计算机程序运行的内部机制有了更深入的了解。这一章主要讲解了操作系统和应用程序之间的关系,以及程序在计算机中是如何被调度和执行的。这些内容对于初学者来说可能有些抽象和难以理解,但作......
  • 程序是怎么跑起来的读后感十一
    《程序是怎样跑起来的》第十一章读后感第十一章《程序是怎样跑起来的》深入探讨了计算机中数据的表示方式以及二进制数的基础知识。这一章为我揭示了程序运行的底层机制,让我对计算机如何处理和存储数据有了更清晰的认识。首先,作者通过解释位和字节的关系,让我对计算机内部数据的......
  • 程序是怎么跑起来的读后感十二
    《程序是怎样跑起来的》第十二章读后感第十二章《程序是怎样跑起来的》继续深入探讨了计算机程序运行的内部机制,特别是关于程序如何与计算机的各个硬件组件进行交互。读完这一章后,我对计算机的基本构成和运行原理有了更全面的理解。首先,作者通过介绍计算机的基本构成,如CPU、内存......
  • 《程序是怎样跑起来的》第九章
    操作系统的原型是一种只具备加载和运行程序功能的监控程序。随着时代的发展人们将提供基本输入输出功能的程序添加到了监控程序中,接着有添加了硬件控制程序、语言处理程序以及各种工具,所以操作系统不是一个单独的程序,而是多个程序的集合。我们所编写的程序并不会直接使用硬件的功......