首页 > 其他分享 >函数过程调用

函数过程调用

时间:2023-04-23 18:46:35浏览次数:29  
标签:调用 入栈 ESP 函数调用 地址 指令 过程 函数

这一章中先以如下代码来讨论一下函数调用的大致过程:

 

 

  解释:

  首先明确一点:

    在函数执行的过程中,变量,参数,地址等都是放到栈中:

    

    而且需要注意的是:

    栈的栈底是在高地址,每一次入栈,栈指针寄存器ESP都会 -=

 

  Call指令 会将Call指令的下一条指令的地址入栈,这条保存的数据被称为返回地址

  Ret指令 会将目前ESP所指向的地址,其保存的数据放回到EIP(程序计数器)中

   然后EIP在不断地取指,执行

   注意每一次执行Ret时,都保证ESP目前指向的是当时入栈的返回地址(如果不是的话当然会出错了)

     这样保证了当函数调用返回时,可以延续上一个函数中继续执行

 

  返回值 (即函数return 后面跟着的变量)都是保存到EAX中的

  

 

 

标签:调用,入栈,ESP,函数调用,地址,指令,过程,函数
From: https://www.cnblogs.com/cilinmengye/p/17347400.html

相关文章

  • js循环调用接口,获取每一次接口的值
    vue代码。data数据:list:[{listName:"待办",listNum:0},{listName:"退回",listNum:0},{listName:"已办",listNum:0},{listName:"全部",listNum:0}],methods里面的方法:asyncgetAllData(){this.list......
  • MKL普通矩阵运算示例及函数封装
    本示例将介绍MKL中的矩阵乘法和求逆,使用MKL进行此类大型矩阵运算可大量节省计算时间和空间,但由于MKL中的原生API接口繁杂,因此将常用函数封装,便于后续使用,最后在实际例子中调用接口执行想要的矩阵运算。1MKL矩阵乘法案例所用示例如下,矩阵A、B分别为\[A={\left[{\begin{array......
  • Eclipse中获取类的继承关系和被谁调用[转]
    Eclipse中的右键菜单中的opentypehierarchy可以获取类的继承关系。而opencallhierarchy的可以在项目中寻找当前函数都被谁在何处调用过。这个能够帮助理解当前函数的“可用之处”,尤其在阅读别人的代码的时候非常有用。......
  • 【转载】PHP 箭头函数( Lambda表达式 )
    参考箭头函数(php官方中文文档)Laravel10集合--learnku环境软件/系统版本说明windows10php8.2.5-nts-Win32-vs16-x64箭头函数要求>=7.4.0备注如果需要详细了解,请点击本文参考内的官网链接,本文只是简单记录浏览learnku中文Laravel文档的时候......
  • MySQL常用函数
    mysql是一个常用的关系型数据库管理系统,提供了许多有用的函数来帮助处理数据。下面是一些mysql中常用的函数:字符串函数concat():将两个或多个字符串连接起来。length():返回指定字符串的字符数。substr():返回指定字符串的子串。lower():将指定字符串转换为小写形式。......
  • PHP 常用数组函数汇集,详细解释描述
    PHPArray函数函数描述PHParray()创建数组。3array_change_key_case()返回其键均为大写或小写的数组。4array_chunk()把一个数组分割为新的数组块。4array_combine()通过合并两个数组来创建一个新数组。5array_count_values()用于统计数组中所有值出现的次数。4array_diff()返回两......
  • LightOJ1007---Mathematically Hard (欧拉函数)
    Mathematicallysomeproblemslookhard.Butwiththehelpofthecomputer,someproblemscanbeeasilysolvable.Inthisproblem,youwillbegiventwointegersaandb.Youhavetofindthesummationofthescoresofthenumbersfromatob(inclusive).T......
  • Jmeter调用Python脚本实现参数互传(OS进程取样器)
    1:新增取样器--->os进程取样器--》配置命令、命令行参数;2.os进程取样器命令行地址下的bat文件的内容:  3.py文件接收jmeter传递过来的值: 4.正则提取os进程提取器返回的值,也就是py文件返回的值:  ......
  • shell自定义函数
    函数调用通常将函数看成是脚本中的一段代码,在使用函数前必须先定义该函数,使用时利用函数名直接调用。例:编写脚本func_script,内容如下。#!/bin/bashREPEAT=3fa(){echo"Nowfafunctionisstarting..."echo}fb(){i=0echo"Andnowthefbbebins."sleep......
  • Vulnhub之 BoredHackerBlog: Social Network 2.0靶机详细测试过程
    Socnet作者:jasonhuawen靶机信息名称:BoredHackerBlog:SocialNetwork2.0地址:https://www.vulnhub.com/entry/boredhackerblog-social-network-20,455/识别目标主机IP地址(kali㉿kali)-[~/Desktop/Vulnhub/Socnet]└─$sudonetdiscover-ieth1-r192.168.56.0/24Cu......