首页 > 编程语言 >对于计算机汇编语言的认识(《程序是怎样跑起来的》第10章)

对于计算机汇编语言的认识(《程序是怎样跑起来的》第10章)

时间:2024-02-21 20:00:50浏览次数:32  
标签:10 计算机 汇编语言 程序 pop 调用函数 寄存器 push

通过阅读程序《程序是怎样跑起来的》第10章,我对于汇编语言的知识有了一定的了解。通过阅读,我认为汇编语言是介于程序员所编写的高级语言和CPU能读懂的机器语言之间的以供深入了解计算机运行原理,同时可以直观看到程序运行问题所在的语言。因为汇编语言是为机器语言添加助记符,如此可以让程序员读懂本地代码的含义。但CPU终归只认识机器语言,因此汇编语言依然需要转变为本地代码,这一过程叫做汇编,相反本地代码转为汇编语言就叫做反汇编了。汇编/反汇编这一过程是通过汇编器(程序)进行的,但是汇编语言转变为本地代码的过程也并非容易的,这一过程需要提供转变为本地代码的指令与解读(构造、方法)汇编语言的伪指令提供给汇编器进行汇编,而高级语言到汇编语言的过程是通过高级语言的编译器来实现的,至此三者关系清晰明了。
其中汇编语言也有其固定的的语法格式:操作码+操作数。如书中所例:Give me money中Give就是操作码,me和money就是操作数。当然汇编语言的操作码也是专有字符的,如mov、and、push、pop、call、ret。他们各有自己功能,就像push和pop是将数据读入和读出内存,而这个内存是指的栈。栈在前几章中多次提到,他是存储临时数据的空间,因此就是通过push/pop特殊语法来将数据读入/读出。并且读入和读出的数据是由寄存器指定的地址。在一些具有全局变量和局部变量的程序中,汇编语言会将不同的变量分为不同的段落,并且有各自的伪指令。
但是栈的功能不止于此,在第一章提到调用函数就需要栈来帮助,因为在调用函数之后,寄存器不会返回到接下来应该进行处理数据的地址,因此在函数的入口是将需要处理的数据push进栈-call调用函数-在函数的出口时将数据pop出栈-ret返回到需要调用的地址。如此就解决了调用函数的问题。并且函数的参数是由栈来传递的,函数的返回值是由寄存器来返回的。
在处理循环和条件这类情况的时候,汇编语言使用的是jmp跳转指令,跳转到初始条件,但这一过程中会使用mov指令将寄存器的值改变,具体情况根据每个程序的迭代条件来定。

标签:10,计算机,汇编语言,程序,pop,调用函数,寄存器,push
From: https://www.cnblogs.com/xhsbk/p/18026106

相关文章

  • Go 100 mistakes - #45: Returning a nil receiver
        We’veseeninthissectionthatinGo,havinganilreceiverisallowed,andaninterfaceconvertedfromanilpointerisn’tanilinterface.Forthatreason,whenwehave toreturnaninterface,weshouldreturnnotanilpointerbuta......
  • Weblogic XMLDecoder反序列化漏洞(CVE-2017-10271)复现
    0x00漏洞简介OracleFusionMiddleware(Oracle融合中间件)是美国甲骨文(Oracle)公司的一套面向企业和云环境的业务创新平台。该平台提供了中间件、软件集合等功能。OracleWebLogicServer是其中的一个适用于云环境和传统环境的应用服务器组件。OracleFusionMiddleware中的Oracle......
  • Windows10在启动时自动运行的应用
    Windows10在启动时自动运行的应用步骤:选择“开始”按钮,然后滚动查找你希望在启动时运行的应用。右键单击该应用,选择“更多”,然后选择“打开文件位置”。此操作会打开保存应用快捷方式的位置。如果没有“打开文件位置”选项,这意味着该应用无法在启动时运行。文件位置打......
  • 2023 re:Invent 用 PartyRock 10 分钟构建你的 AI 应用
    前言一年一度的亚马逊云科技的re:Invent可谓是全球云计算、科技圈的狂欢,每次都能带来一些最前沿的方向标,这次也不例外。在看完一些keynote和介绍之后,我也去亲自体验了一些最近发布的内容。其中让我感受最深刻的无疑是PartyRock了。PartyRock真的算是做到了:能让任何人快速......
  • Go 100 mistakes - #42: Not knowing which type of receiver to use
          ......
  • 《程序是怎样跑起来的》第10章
    本章主要讲通过汇编语言认识程序的真面目。本章讲汇编语言到程序,那么,我们总得要知道什么是汇编语言吧?其实呢汇编语言就是(assemblylanguage)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的......
  • GaussDB_on_kylinV10SP3_单节点安装过程
    GaussDB_on_kylinV10SP3_单节点安装过程背景OpenGauss的搭建和部署非常简单但是GaussDB的就比较复杂.我理解openGauss的简单版本应该就是PG内核直接使用但是GaussDB的版本应该是更换了存储殷勤,所以部署起来比较复杂.自己的理解可能不正确.注意本次只是进行:单节点中......
  • 初中英语优秀范文100篇-086The Person Who Has Influenced Me Most-对我影响最大的人
    PDF格式公众号回复关键字:SHCZFW086记忆树1Mymotheristhepersonwhohasinfluencedmemost.翻译我的母亲是对我影响最大的人简化记忆母亲句子结构主语Mymother作为主语,明确指出了影响说话者最大的人是“我的母亲系动词is系动词,用于连接主语和表语,表示主......
  • mysql服务启动报错:本地计算机上的mysql服务启动后停止,某些服务在未由其他服务或程序启
    报错如下: 解决办法:1.开始->cmd->以管理员身份运行目录切换到C:\ProgramFiles\MySQL\MySQLServer5.7\bin2.运行mysqld--initialize-insecure--user=mysql说明:初始化后,root密码位空3.运行netstartmysql 三、修改mysql57的root密码[2]四、参考[1] mysql服务启......
  • 计算机基础
    1.计算机基础1.1计算机名称:Computer,全称电子计算机,俗称电脑。定义:能够按照程序运行,自动,高速处理海量数据的现代化智能电子设备。组成:由硬件和软件组成。形式:常见的有台式计算机,笔记本计算机,大型计算机等。应用:科学计算,数据处理,自动控制,计算机辅助设计,人工智......